home *** CD-ROM | disk | FTP | other *** search
/ Power CD / Power CD ATARI-Rechner Lieben.iso / GAMES / VERSCHIE.DEN / HQ_I / HQ1.GFA (.txt) < prev    next >
Encoding:
GFA-BASIC Atari  |  1992-03-11  |  121.4 KB  |  5,002 lines

  1. $m131072
  2. '
  3. ' The HOUSE QUEST I - The search for the lost amtmann
  4. '
  5. ' Version 2.03 vom 10.03.1992
  6. '
  7. ' Written by Christian Becker
  8. '
  9. ' mit:   BUUUM 1D - Adventure-Game-Interpreter
  10. '
  11. '        Version 1.00 vom 01.02.1992
  12. '
  13. '        Geschrieben von Christian Becker
  14. '
  15. ' Freeware (fw) 1989-1992 by MEGAVENTURES
  16. '
  17. ap_id&=APPL_INIT()      ! UNSAUBER
  18. IF ap_id&=0
  19.   acc!=FALSE
  20. ELSE
  21.   acc!=TRUE
  22. ENDIF
  23. '
  24. ON ERROR GOSUB errhand
  25. '
  26. DIM wup!(16)
  27. ARRAYFILL wup!(),FALSE
  28. wupdex%=0
  29. '
  30. sperr
  31. '
  32. IF acc!
  33.   me_id&=MENU_REGISTER(ap_id&,"  House Quest I")
  34. ELSE
  35.   RESERVE 131072
  36. ENDIF
  37. '
  38. aeshandle&=GRAF_HANDLE(x%,y%,x2%,y2%)
  39. '
  40. DEFMOUSE 0
  41. '
  42. vdihandle&=@open_vworkstation(aeshandle&)
  43. IF vdihandle&=0
  44.   GOSUB inst_err("Fehler beim Öffnen der virtuellen Workstation.")
  45. ENDIF
  46. V~H=vdihandle&
  47. '
  48. GOSUB res_init
  49. '
  50. GOSUB init_window
  51. '
  52. frei
  53. '
  54. IF acc!=TRUE
  55.   menbar!=FALSE
  56. ELSE
  57.   menbar!=TRUE
  58.   feh%=RSRC_LOAD("HQ1.RSC")
  59.   IF feh%=0
  60.     PRINT "Fehler beim Laden der Resourcedatei!"
  61.     PRINT "Menüzeile kann nicht benutzt werden."
  62.     PRINT "Bitte eine Taste drücken ..."
  63.     ~INP(2)
  64.     menbar!=FALSE
  65.   ELSE
  66.     '
  67.     LET tree1&=0
  68.     LET tree2&=1
  69.     LET info&=7
  70.     LET ende&=16
  71.     LET load&=17
  72.     LET save&=18
  73.     LET rsave&=20
  74.     LET rload&=21
  75.     LET neus&=23
  76.     LET version&=4
  77.     LET fertig&=10
  78.     ~RSRC_GADDR(0,tree1&,adr1%)
  79.     ~RSRC_GADDR(0,tree2&,adr2%)
  80.     '
  81.     ~MENU_BAR(adr1%,1)
  82.   ENDIF
  83. ENDIF
  84. '
  85. GOSUB adv_init
  86. IF NOT acc!
  87.   GOSUB rs_load
  88. ENDIF
  89. '
  90. IF NOT acc!
  91.   handle&=@open_window(bx%,by%,4079," House Quest I ","",8,16,8,16)
  92.   m4&=handle&
  93.   offset(0,0)
  94.   ~WIND_GET(m4&,4,fx&,fy&,fw&,fh&)
  95.   GOSUB clrscr
  96.   GOSUB clear_events
  97.   GOSUB intro
  98.   offset(0,0)
  99.   ~WIND_GET(m4&,4,fx&,fy&,fw&,fh&)
  100. ENDIF
  101. '
  102. ' ***     Hauptprogramm    ***
  103. '
  104. main:
  105. '
  106. alt_raum&=-1
  107. '
  108. DO
  109.   DO
  110.     '
  111.     IF NOT reset!
  112.       ret%=EVNT_MULTI(&X10010,1,1,1,0,0,0,0,0,0,0,0,0,0,V:mm&(0),127,mx%,my%,mk%,i%,key%,t%)
  113.     ELSE
  114.       ret%=0
  115.     ENDIF
  116.     '
  117.     IF (ret% AND &X10000)=&X10000
  118.       ' Mitteilung
  119.       GOSUB window_handling
  120.     ENDIF
  121.     '
  122.     IF reset!
  123.       ret%=0
  124.       GOSUB force_wred
  125.     ENDIF
  126.     IF (NOT ontop!) AND (NOT reset!)
  127.       GOSUB spc_events
  128.     ENDIF
  129.     '
  130.     '
  131.     IF (ret% AND &X10)=&X10
  132.       ' Maus-Ereignis
  133.       ~WIND_GET(m4&,4,fx&,fy&,fw&,fh&)
  134.       IF mx%>=fx& AND my%>=fy& AND mx%<fx&+fw& AND my%<fy&+fh&
  135.         notmaus
  136.         '
  137.         IF NOT reset!
  138.           '
  139.           fs!=TRUE
  140.           GOSUB eingabe
  141.           '
  142.           go!=FALSE
  143.           GOSUB parser(in$,vk&,nom&,pr&,nom2&)
  144.           GOSUB check_parser(vk&,nom&,pr&,nom2&)
  145.           '
  146.           INC zug&
  147.           '
  148.         ENDIF
  149.         '
  150.       ENDIF
  151.     ENDIF
  152.   LOOP
  153.   '
  154. LOOP
  155. '
  156. ' **** Window-Routinen ****
  157. ' >>>> WINDOS V3.0     <<<<
  158. '
  159. ' Window-kontroll-Block
  160. '
  161. ' Array : Windowhandle als Index
  162. ' wx&,wy&         : linke,obere Ecke des Gesamtbildes
  163. ' wb&,wh&         : maximale Breite/Höhe
  164. ' we&             : Elemente
  165. ' wo!             : Window offen?
  166. ' ws_sx,ws_sy     : Stepbreiten für Seiten
  167. ' ws_zx,ws_zy     : Stepbreiten für Zeilen
  168. ' wmx,wmy,wmb,wmh : Speicher für FullW
  169. '
  170. PROCEDURE calc_slider(handle&)
  171.   LOCAL fx&,fy&,fw&,fh&,len&,pos&
  172.   ~WIND_GET(handle&,4,fx&,fy&,fw&,fh&)
  173.   '
  174.   IF BTST(we&(handle&),8)
  175.     len&=1000/wb&(handle&)*fw&
  176.     ~WIND_SET(handle&,15,len&,0,0,0)
  177.     pos&=1000/(wb&(handle&)-fw&+1)*wx&(handle&)
  178.     ~WIND_SET(handle&,8,pos&,0,0,0)
  179.   ENDIF
  180.   '
  181.   IF BTST(we&(handle&),11)
  182.     len&=1000/wh&(handle&)*fh&
  183.     ~WIND_SET(handle&,16,len&,0,0,0)
  184.     pos&=1000/(wh&(handle&)-fh&+1)*wy&(handle&)
  185.     ~WIND_SET(handle&,9,pos&,0,0,0)
  186.   ENDIF
  187. RETURN
  188. '
  189. PROCEDURE init_window
  190.   maxwin&=16
  191.   DIM wx&(maxwin&),wy&(maxwin&),wh&(maxwin&),wb&(maxwin&)
  192.   DIM wmx&(maxwin&),wmy&(maxwin&),wmh&(maxwin&),wmb&(maxwin&)
  193.   DIM ws_sx&(maxwin&)
  194.   DIM ws_sy&(maxwin&)
  195.   DIM ws_zx&(maxwin&)
  196.   DIM ws_zy&(maxwin&)
  197.   DIM wo!(maxwin&),we&(maxwin&)
  198.   '
  199.   ARRAYFILL wo!(),FALSE
  200.   LET name&=1
  201.   LET close&=2
  202.   full&=4
  203.   move&=8
  204.   info&=16
  205.   size&=32
  206.   uparrow&=64
  207.   dnarrow&=128
  208.   vslide&=256
  209.   lfarrow&=512
  210.   rtarrow&=1024
  211.   hslide&=2048
  212.   '
  213. RETURN
  214. '
  215. FUNCTION open_window(maxw&,maxh&,element%,t$,i$,sx%,sy%,zx%,zy%)
  216.   LOCAL x&,y&,b&,h&,handle&,adr%
  217.   '
  218.   ~WIND_GET(0,4,x&,y&,b&,h&)
  219.   '
  220.   ~WIND_CALC(1,element%,x&,y&,b&,h&,x2&,y2&,b2&,h2&)
  221.   '
  222.   ~WIND_CALC(0,element%,x2&,y2&,b2&,h2&,x&,y&,b&,h&)
  223.   '
  224.   handle&=WIND_CREATE(element%,x&,y&,b&,h&)
  225.   IF handle&<=0
  226.     inst_err("Kein Fenster mehr frei.")
  227.   ENDIF
  228.   IF handle&>maxwin&
  229.     inst_err("Windowhandle im ungültigen Bereich.")
  230.   ENDIF
  231.   '
  232.   we&(handle&)=element%
  233.   wo!(handle&)=TRUE
  234.   wx&(handle&)=0
  235.   wy&(handle&)=0
  236.   wb&(handle&)=maxw&
  237.   wh&(handle&)=maxh&
  238.   '
  239.   ws_sx&(handle&)=sx%
  240.   ws_sy&(handle&)=sy%
  241.   ws_zx&(handle&)=zx%
  242.   ws_zy&(handle&)=zy%
  243.   '
  244.   IF BTST(element%,0)
  245.     adr%=titel%+80*handle&
  246.     CHAR{adr%}=t$
  247.     ~WIND_SET(handle&,2,CARD(SWAP(adr%)),CARD(adr%),0,0)
  248.   ENDIF
  249.   IF BTST(element%,4)
  250.     adr%=info%+80*handle&
  251.     CHAR{adr%}=i$
  252.     ~WIND_SET(handle&,3,CARD(SWAP(adr%)),CARD(adr%),0,0)
  253.   ENDIF
  254.   '
  255.   ~WIND_CALC(1,element%,x&,y&,b&,h&,x2&,y2&,b2&,h2&)
  256.   b2&=MIN(b2&,maxw&)
  257.   h2&=MIN(h2&,maxh&)
  258.   ~WIND_CALC(0,element%,x2&,y2&,b2&,h2&,x&,y&,b&,h&)
  259.   '
  260.   wmx&(handle&)=x&
  261.   wmy&(handle&)=y&
  262.   wmb&(handle&)=b&
  263.   wmh&(handle&)=h&
  264.   '
  265.   ~WIND_OPEN(handle&,x&,y&,b&,h&)
  266.   calc_slider(handle&)
  267.   '
  268.   RETURN handle&
  269. ENDFUNC
  270. '
  271. PROCEDURE set_offset(handle&)
  272.   LOCAL fx&,fy&,fw&,fh&
  273.   ~WIND_GET(handle&,4,fx&,fy&,fw&,fh&)
  274.   offset(0,0)
  275.   IF NOT w_red!
  276.     CLIP fx&,fy&,fw&,fh&
  277.   ENDIF
  278.   offset(fx&-wx&(handle&),fy&-wy&(handle&))
  279. RETURN
  280. '
  281. PROCEDURE so
  282.   SUB wy&(m4&),ws_sy&(m4&)
  283.   wy&(m4&)=MAX(wy&(m4&),0)
  284. RETURN
  285. '
  286. PROCEDURE su
  287.   ADD wy&(m4&),ws_sy&(m4&)
  288.   wy&(m4&)=MIN(wy&(m4&),wh&(m4&)-fh&-1)
  289. RETURN
  290. '
  291. PROCEDURE sl
  292.   SUB wx&(m4&),ws_sx&(m4&)
  293.   wx&(m4&)=MAX(wx&(m4&),0)
  294. RETURN
  295. '
  296. PROCEDURE sr
  297.   ADD wx&(m4&),ws_sx&(m4&)
  298.   wx&(m4&)=MIN(wx&(m4&),wb&(m4&)-fw&-1)
  299. RETURN
  300. '
  301. PROCEDURE zo
  302.   LOCAL rets%
  303.   rets%=ws_zy&(m4&)
  304.   IF wy&(m4&)<rets%
  305.     rets%=wy&(m4&)
  306.   ENDIF
  307.   IF wy&(m4&)>0
  308.     sm%(0)=0
  309.     dm%(0)=0
  310.     p%(0)=fx&
  311.     p%(1)=fy&
  312.     p%(2)=fx&+fw&-1
  313.     p%(3)=fy&+fh&-rets%-1
  314.     p%(4)=fx&
  315.     p%(5)=fy&+rets%
  316.     p%(6)=fx&+fw&-1
  317.     p%(7)=fy&+fh&-1
  318.     p%(8)=3
  319.     BITBLT sm%(),dm%(),p%()
  320.     fh&=rets%
  321.     SUB wy&(m4&),rets%
  322.   ENDIF
  323.   wy&(m4&)=MAX(wy&(m4&),0)
  324. RETURN
  325. '
  326. PROCEDURE zu
  327.   LOCAL retl%,rets%
  328.   retl%=fh&
  329.   rets%=ws_zy&(m4&)
  330.   IF wh&(m4&)-(wy&(m4&)+fh&-1)<rets%
  331.     rets%=wh&(m4&)-(wy&(m4&)+fh&-1)
  332.   ENDIF
  333.   IF wy&(m4&)<wh&(m4&)-fh&-1
  334.     sm%(0)=0
  335.     dm%(0)=0
  336.     p%(0)=fx&
  337.     p%(1)=fy&+rets%
  338.     p%(2)=fx&+fw&-1
  339.     p%(3)=fy&+fh&-1
  340.     p%(4)=fx&
  341.     p%(5)=fy&
  342.     p%(6)=fx&+fw&-1
  343.     p%(7)=fy&+fh&-rets%-1
  344.     p%(8)=3
  345.     BITBLT sm%(),dm%(),p%()
  346.     fy&=fy&+fh&-rets%
  347.     fh&=rets%
  348.     ADD wy&(m4&),rets%
  349.   ENDIF
  350.   wy&(m4&)=MIN(wy&(m4&),wh&(m4&)-retl%-1)
  351. RETURN
  352. '
  353. PROCEDURE zl
  354.   LOCAL rets%
  355.   rets%=ws_zx&(m4&)
  356.   IF wx&(m4&)<rets%
  357.     rets%=wx&(m4&)
  358.   ENDIF
  359.   IF wx&(m4&)>0
  360.     sm%(0)=0
  361.     dm%(0)=0
  362.     p%(0)=fx&
  363.     p%(1)=fy&
  364.     p%(2)=fx&+fw&-rets%-1
  365.     p%(3)=fy&+fh&-1
  366.     p%(4)=fx&+rets%
  367.     p%(5)=fy&
  368.     p%(6)=fx&+fw&-1
  369.     p%(7)=fy&+fh&-1
  370.     p%(8)=3
  371.     BITBLT sm%(),dm%(),p%()
  372.     fw&=rets%
  373.     SUB wx&(m4&),rets%
  374.   ENDIF
  375.   wx&(m4&)=MAX(wx&(m4&),0)
  376. RETURN
  377. '
  378. PROCEDURE zr
  379.   LOCAL retl%,rets%
  380.   retl%=fw&
  381.   rets%=ws_zx&(m4&)
  382.   IF wb&(m4&)-(wx&(m4&)+fw&-1)<rets%
  383.     rets%=wb&(m4&)-(wx&(m4&)+fw&-1)
  384.   ENDIF
  385.   IF wx&(m4&)<wb&(m4&)-fw&-1
  386.     sm%(0)=0
  387.     dm%(0)=0
  388.     p%(0)=fx&+rets%
  389.     p%(1)=fy&
  390.     p%(2)=fx&+fw&-1
  391.     p%(3)=fy&+fh&-1
  392.     p%(4)=fx&
  393.     p%(5)=fy&
  394.     p%(6)=fx&+fw&-rets%-1
  395.     p%(7)=fy&+fh&-1
  396.     p%(8)=3
  397.     BITBLT sm%(),dm%(),p%()
  398.     fx&=fx&+fw&-rets%
  399.     fw&=rets%
  400.     ADD wx&(m4&),rets%
  401.   ENDIF
  402.   wx&(m4&)=MIN(wx&(m4&),wb&(m4&)-retl%-1)
  403. RETURN
  404. '
  405. PROCEDURE do_redraw(handle&,x&,y&,w&,h&)
  406.   LOCAL ax&,ay&,aw&,ah&,t2_gx&,t2_gy&,t2_gw&,t2_gh&,flag!
  407.   '
  408.   w_red!=TRUE
  409.   sperr
  410.   DEFMOUSE 2
  411.   t2_gx&=x&
  412.   t2_gy&=y&
  413.   t2_gw&=w&
  414.   t2_gh&=h&
  415.   ~WIND_GET(handle&,4,fx&,fy&,fw&,fh&)
  416.   ~WIND_GET(handle&,11,t1_gx&,t1_gy&,t1_gw&,t1_gh&)
  417.   WHILE t1_gw&<>0 AND t1_gh&<>0
  418.     ax&=t1_gx&
  419.     ay&=t1_gy&
  420.     aw&=t1_gw&
  421.     ah&=t1_gh&
  422.     flag!=RC_INTERSECT(t2_gx&,t2_gy&,t2_gw&,t2_gh&,ax&,ay&,aw&,ah&)
  423.     IF flag!=TRUE
  424.       offset(0,0)
  425.       CLIP ax&,ay&,aw&,ah&
  426.       DEFFILL 0,1,0
  427.       wpbox(ax&,ay&,ax&+aw&,ay&+ah&)
  428.       '
  429.       offset(fx&-wx&(handle&),fy&-wy&(handle&))
  430.       GOSUB draw_window
  431.       '
  432.     ENDIF
  433.     '
  434.     ~WIND_GET(handle&,12,t1_gx&,t1_gy&,t1_gw&,t1_gh&)
  435.   WEND
  436.   '
  437.   DEFMOUSE 0
  438.   frei
  439.   w_red!=FALSE
  440. RETURN
  441. '
  442. PROCEDURE window_handling
  443.   LOCAL ox&,oy&,ow&,oh&,t%
  444.   SELECT m1&
  445.   CASE 40
  446.     handle&=@open_window(bx%,by%,4079," House Quest I ","",8,16,8,16)
  447.     m4&=handle&
  448.     '
  449.     GOSUB clrscr
  450.     '
  451.     GOSUB intro
  452.     '
  453.     GOSUB warm_start
  454.     offset(0,0)
  455.     ~WIND_GET(m4&,4,fx&,fy&,fw&,fh&)
  456.   CASE 41
  457.     GOSUB beenden
  458.   CASE 10
  459.     IF m5&=info&
  460.       sperr
  461.       '
  462.       ~FORM_CENTER(adr2%,ox&,oy&,ow&,oh&)
  463.       ~FORM_DIAL(0,0,0,0,0,ox&,oy&,ow&,oh&)
  464.       ~FORM_DIAL(1,0,0,0,0,ox&,oy&,ow&,oh&)
  465.       '
  466.       ~OBJC_DRAW(adr2%,0,8,ox&,oy&,ow&,oh&)
  467.       '
  468.       ~FORM_DO(adr2%,0)
  469.       '
  470.       ~FORM_DIAL(2,0,0,0,0,ox&,oy&,ow&,oh&)
  471.       ~FORM_DIAL(3,0,0,0,0,ox&,oy&,ow&,oh&)
  472.       OB_STATE(adr2%,fertig&)=0
  473.       frei
  474.     ELSE IF m5&=save&
  475.       GOSUB save
  476.     ELSE IF m5&=rsave&
  477.       GOSUB ramsave
  478.     ELSE IF m5&=load&
  479.       GOSUB load
  480.     ELSE IF m5&=rload&
  481.       GOSUB ramload
  482.     ELSE IF m5&=ende&
  483.       ALERT 2,"Willst du wirklich schließen        |und den Genuß von |'The House Quest I ' |beenden?",1," JA |NEIN",t%
  484.       IF t%=1
  485.         GOSUB beenden
  486.       ENDIF
  487.     ELSE IF m5&=neus&
  488.       ALERT 2,"Willst du wirklich |neustarten? |",2," JA |NEIN",t%
  489.       IF t%=1
  490.         GOSUB warm_start
  491.         reset!=TRUE
  492.       ENDIF
  493.     ENDIF
  494.     ~MENU_TNORMAL(adr1%,m4&,1)
  495.   CASE 23       ! Fullwd
  496.     ~WIND_GET(m4&,5,fx&,fy&,fw&,fh&)
  497.     SWAP fx&,wmx&(m4&)
  498.     SWAP fy&,wmy&(m4&)
  499.     SWAP fw&,wmb&(m4&)
  500.     SWAP fh&,wmh&(m4&)
  501.     ~WIND_SET(m4&,5,fx&,fy&,fw&,fh&)
  502.     SWAP fx&,wmx&(m4&)
  503.     SWAP fy&,wmy&(m4&)
  504.     SWAP fw&,wmb&(m4&)
  505.     SWAP fh&,wmh&(m4&)
  506.     wx&(m4&)=0
  507.     wy&(m4&)=0
  508.     GOSUB calc_slider(m4&)
  509.     '
  510.     IF fx&=wmx&(m4&)
  511.       IF fy&=wmy&(m4&)
  512.         IF fw&=wmb&(m4&)
  513.           IF fh&=wmh&(m4&)
  514.             GOSUB force_wred
  515.           ENDIF
  516.         ENDIF
  517.       ENDIF
  518.     ENDIF
  519.     '
  520.   CASE 24   ! Pfeile
  521.     ~WIND_GET(m4&,4,fx&,fy&,fw&,fh&)
  522.     CLIP fx&,fy&,fw&,fh&
  523.     ON m5&+1 GOSUB so,su,zo,zu,sl,sr,zl,zr
  524.     GOSUB set_offset(m4&)
  525.     GOSUB do_redraw(m4&,fx&,fy&,fw&,fh&)
  526.     GOSUB calc_slider(m4&)
  527.   CASE 25   ! hor.Schieber
  528.     ~WIND_SET(m4&,8,m5&,0,0,0)
  529.     ~WIND_GET(m4&,4,fx&,fy&,fw&,fh&)
  530.     wx&(m4&)=(wb&(m4&)-fw&)/1000*m5&
  531.     GOSUB calc_slider(m4&)
  532.     GOSUB do_redraw(m4&,fx&,fy&,fw&,fh&)
  533.   CASE 26   ! vert.Schieber
  534.     ~WIND_SET(m4&,9,m5&,0,0,0)
  535.     ~WIND_GET(m4&,4,fx&,fy&,fw&,fh&)
  536.     wy&(m4&)=(wh&(m4&)-fh&)/1000*m5&
  537.     GOSUB calc_slider(m4&)
  538.     GOSUB do_redraw(m4&,fx&,fy&,fw&,fh&)
  539.   CASE 22
  540.     ' close
  541.     ALERT 2,"Willst du wirklich schließen        |und den Genuß von |'The House Quest I ' |beenden?",1," JA |NEIN",t%
  542.     IF t%=1
  543.       GOSUB beenden
  544.     ENDIF
  545.   CASE 20
  546.     ' Redraw
  547.     GOSUB do_redraw(m4&,m5&,m6&,m7&,m8&)
  548.   CASE 21,29
  549.     ' Topped
  550.     ~WIND_SET(m4&,10,0,0,0,0)
  551.   CASE 28
  552.     ' Move
  553.     m5&=MIN(m5&,mpx%-m7&-1)
  554.     m6&=MIN(m6&,mpy%-m8&-1)
  555.     ~WIND_SET(m4&,5,m5&,m6&,m7&,m8&)
  556.   CASE 27
  557.     ' Sizer
  558.     ~WIND_CALC(1,we&(m4&),m5&,m6&,m7&,m8&,x2&,y2&,b2&,h2&)
  559.     b2&=MIN(wb&(m4&),wx&(m4&)+b2&)
  560.     h2&=MIN(wh&(m4&),wy&(m4&)+h2&)
  561.     SUB b2&,wx&(m4&)
  562.     SUB h2&,wy&(m4&)
  563.     b2&=MAX(b2&,256)
  564.     h2&=MAX(h2&,160)
  565.     ~WIND_CALC(0,we&(m4&),x2&,y2&,b2&,h2&,m5&,m6&,m7&,m8&)
  566.     '
  567.     ~WIND_SET(m4&,5,m5&,m6&,m7&,m8&)
  568.     calc_slider(m4&)
  569.   ENDSELECT
  570. RETURN
  571. '
  572. PROCEDURE redraw
  573.   LOCAL status%,mx%,my%,mk%,ret%,i%,t%
  574.   status%=FALSE
  575.   REPEAT
  576.     ret%=EVNT_MULTI(&X110000,1,1,1,0,0,0,0,0,0,0,0,0,0,V:mm&(0),256,mx%,my%,mk%,i%,key%,t%)
  577.     '
  578.     IF (ret% AND &X10000)=&X10000
  579.       ' Mitteilung
  580.       GOSUB window_handling
  581.     ENDIF
  582.     '
  583.   UNTIL (ret% AND &X100000)=&X100000
  584. RETURN
  585. '
  586. PROCEDURE draw_window
  587.   LOCAL t%,rstil%,z$
  588.   rstil%=stil%
  589.   IF ontop!
  590.     SWAP ex%,s_ex%
  591.     SWAP ey%,s_ey%
  592.     SWAP bx%,s_bx%
  593.     SWAP by%,s_by%
  594.     SWAP cx%,s_cx%
  595.     SWAP cy%,s_cy%
  596.   ENDIF
  597.   '
  598.   reset!=FALSE
  599.   '
  600.   IF no_redraw!=FALSE
  601.     IF alt_raum&<>raum&
  602.       GOSUB clrscr
  603.     ENDIF
  604.     alt_raum&=raum&
  605.     '
  606.     IF licht!=TRUE
  607.       DEC brenn&
  608.     ENDIF
  609.     '
  610.     GOSUB statusline
  611.     '
  612.     IF fl!(16)
  613.       deftxt(1,1,0,fntgr%)
  614.       print_xy(-60,invf%,"Countdown:"+STR$(buum%)+" ")
  615.       deftxt(1,0,0,fntgr%)
  616.       DEC buum%
  617.     ENDIF
  618.     '
  619.     dunkel!=FALSE
  620.     licht!=TRUE
  621.     '
  622.     IF fl!(9)=FALSE
  623.       SELECT raum&
  624.       CASE 28,29,30
  625.         dunkel!=TRUE
  626.         licht!=FALSE
  627.       ENDSELECT
  628.     ENDIF
  629.     '
  630.     IF fl!(10)=FALSE
  631.       SELECT raum&
  632.       CASE 15 TO 27
  633.         dunkel!=TRUE
  634.         licht!=FALSE
  635.       ENDSELECT
  636.     ENDIF
  637.     '
  638.     IF fl!(11)=FALSE
  639.       SELECT raum&
  640.       CASE 2 TO 15
  641.         dunkel!=TRUE
  642.         licht!=FALSE
  643.       ENDSELECT
  644.     ENDIF
  645.     '
  646.     IF fl!(12)=FALSE
  647.       SELECT raum&
  648.       CASE 33 TO 40
  649.         dunkel!=TRUE
  650.         licht!=FALSE
  651.       ENDSELECT
  652.     ENDIF
  653.     '
  654.     IF NOT reset!
  655.       IF dunkel!=TRUE AND licht!=FALSE
  656.         DEFFILL 1,1,0
  657.         wpbox(0,0,bx%-1,by%-1)
  658.         GOSUB print_my(2,"Es ist so stockeduster, so daß du nichts erkennen kannst.")
  659.       ELSE
  660.         deftxt(1,1,0,fntgr%)
  661.         GOSUB print_xy(0,2,@get_short_raum$(raum&))
  662.         deftxt(1,0,0,fntgr%)
  663.         GOSUB printw(3,@get_raum_des$(raum&),FALSE)
  664.         GOSUB print_xy(0,objf%,@print_richtung$(raum&))
  665.         GOSUB print_xy(0,objf%+1,SPACE$(75))
  666.         deftxt(1,1,0,fntgr%)
  667.         GOSUB print_xy(0,-(objf%+1),@print_objekts$(raum&))
  668.         deftxt(1,0,0,fntgr%)
  669.       ENDIF
  670.       '
  671.       IF NOT reset!
  672.         GOSUB draw_verbs
  673.         in$=""
  674.         bef$=""
  675.         o1$=""
  676.         o2$=""
  677.         pr$=""
  678.         GOSUB show_eingabe
  679.       ENDIF
  680.     ENDIF
  681.   ENDIF
  682.   GOSUB show_eingabe
  683.   IF ontop!
  684.     SWAP ex%,s_ex%
  685.     SWAP ey%,s_ey%
  686.     SWAP bx%,s_bx%
  687.     SWAP by%,s_by%
  688.     SWAP cx%,s_cx%
  689.     SWAP cy%,s_cy%
  690.     '
  691.     DEFFILL 0,1,0
  692.     wprbox(ex%-sx%/2,ey%-sy%/2,ex%+bx%-1+sx%/2,ey%+by%-1+sy%/2)
  693.     DEFLINE 1,3,0,0
  694.     wrbox(ex%-sx%/2,ey%-sy%/2,ex%+bx%-1+sx%/2,ey%+by%-1+sy%/2)
  695.     DEFLINE 1,1,0,0
  696.     COLOR 0
  697.     wrbox(ex%-sx%/2,ey%-sy%/2,ex%+bx%-1+sx%/2,ey%+by%-1+sy%/2)
  698.     COLOR 1
  699.     FOR t%=0 TO DIM?(r_top$())-1
  700.       z$=r_top$(t%)
  701.       IF z$<>""
  702.         deftxt(1,ASC(LEFT$(z$)),0,fntgr%)
  703.         IF ASC(MID$(z$,2,1))=0
  704.           print_redxy(0,t%,MID$(z$,3))
  705.         ELSE
  706.           print_redmy(t%,MID$(z$,3))
  707.         ENDIF
  708.       ENDIF
  709.     NEXT t%
  710.   ENDIF
  711.   deftxt(1,rstil%,0,fntgr%)
  712. RETURN
  713. '
  714. ' ****         Parser        ****
  715. '
  716. PROCEDURE check_parser(vk_&,nom_&,pr_&,nom2_&)
  717.   raus!=FALSE
  718.   IF vk_&<>-255 AND nom_&=-255
  719.     topic("Sprich bitte in vollständigen Sätzen, sonst ist eine einwandfreie Kommunikation nicht gewährleistet!")
  720.   ELSE
  721.     IF vk_&=-255
  722.       topic("Das Verb "+vok$+" ist nicht in meinem Wortschatz!")
  723.       raus!=TRUE
  724.     ENDIF
  725.     IF nom_&=-255
  726.       topic("Das Nomen "+nom$+" ist mir unbekannt!")
  727.       raus!=TRUE
  728.     ENDIF
  729.     IF nom2_&=-255
  730.       topic("Von dem Nomen "+nom2$+" habe ich noch nie gehört!")
  731.       raus!=TRUE
  732.     ENDIF
  733.     IF pr_&=-255
  734.       topic("Das Wort "+pr$+" erscheint mir dubios!")
  735.       raus!=TRUE
  736.     ENDIF
  737.     IF raus!<>TRUE
  738.       GOSUB interpreter
  739.     ENDIF
  740.   ENDIF
  741. RETURN
  742. '
  743. PROCEDURE parser(ps_$,VAR vk_&,nom_&,pr_&,nom2_&)
  744.   ' PARSER SPAS V0.12
  745.   ' written in 1988/92 by CB for PPI
  746.   vk_&=-1
  747.   nom_&=-1
  748.   pr_&=-1
  749.   nom2&=-1
  750.   pos&=0
  751.   FOR t&=1 TO LEN(ps_$)
  752.     IF MID$(ps_$,t&,1)=" "
  753.       INC pos&
  754.     ENDIF
  755.   NEXT t&
  756.   gefv!=FALSE
  757.   gefn!=FALSE
  758.   gefp!=FALSE
  759.   gefn2!=FALSE
  760.   SELECT pos&
  761.   CASE 0
  762.     vok$=ps_$
  763.     GOSUB search_vok(ps_$)
  764.   CASE 1
  765.     pos1&=INSTR(ps_$," ")
  766.     vok$=MID$(ps_$,1,pos1&-1)
  767.     nom$=MID$(ps_$,pos1&+1)
  768.     GOSUB search_vok(vok$)
  769.     GOSUB search_nom(nom$)
  770.   CASE 2
  771.     pos1&=INSTR(ps_$," ")
  772.     pos2&=RINSTR(ps_$," ")
  773.     vok$=MID$(ps_$,1,pos1&-1)
  774.     nom$=MID$(ps_$,pos1&+1,pos2&-pos1&-1)
  775.     pr$=MID$(ps_$,pos2&+1)
  776.     GOSUB search_vok(vok$)
  777.     GOSUB search_nom(nom$)
  778.     GOSUB search_pr(pr$)
  779.   CASE 3
  780.     pos1&=INSTR(ps_$," ")
  781.     pos2&=RINSTR(ps_$," ")
  782.     vok$=MID$(ps_$,1,pos1&-1)
  783.     b$=MID$(ps_$,pos1&+1,pos2&-pos1&-1)
  784.     nom2$=MID$(ps_$,pos2&+1)
  785.     pos&=INSTR(b$," ")
  786.     nom$=MID$(b$,1,pos&-1)
  787.     pr$=MID$(b$,pos&+1)
  788.     GOSUB search_nom2(nom2$)
  789.     GOSUB search_vok(vok$)
  790.     GOSUB search_nom(nom$)
  791.     GOSUB search_pr(pr$)
  792.   ENDSELECT
  793.   IF gefv!=0 AND vk_&<>-1
  794.     vk_&=-255
  795.   ENDIF
  796.   IF gefn!=0 AND nom_&<>-1
  797.     nom_&=-255
  798.   ENDIF
  799.   IF gefn2!=0 AND nom2_&<>-1
  800.     nom2_&=-255
  801.   ENDIF
  802.   IF gefp!=0 AND pr_&<>-1
  803.     pr_&=-255
  804.   ENDIF
  805. RETURN
  806. '
  807. PROCEDURE search_vok(a$)
  808.   vk_&=0
  809.   FOR t&=0 TO maxv&
  810.     IF UPPER$(a$)=UPPER$(vk$(t&))
  811.       gefv!=TRUE
  812.       vk_&=t&
  813.     ENDIF
  814.   NEXT t&
  815. RETURN
  816. '
  817. PROCEDURE search_nom(a$)
  818.   nom_&=0
  819.   FOR t&=0 TO maxn&
  820.     IF UPPER$(a$)=UPPER$(nom$(t&))
  821.       gefn!=TRUE
  822.       nom_&=t&
  823.     ENDIF
  824.   NEXT t&
  825. RETURN
  826. '
  827. PROCEDURE search_nom2(a$)
  828.   nom2_&=0
  829.   FOR t&=0 TO maxn&
  830.     IF UPPER$(a$)=UPPER$(nom$(t&))
  831.       gefn2!=TRUE
  832.       nom2_&=t&
  833.     ENDIF
  834.   NEXT t&
  835. RETURN
  836. '
  837. PROCEDURE search_pr(a$)
  838.   pr_&=0
  839.   FOR t&=0 TO maxp&
  840.     IF UPPER$(a$)=UPPER$(pr$(t&))
  841.       gefp!=TRUE
  842.       pr_&=t&
  843.     ENDIF
  844.   NEXT t&
  845. RETURN
  846. '
  847. PROCEDURE check_nom
  848.   IF nom&=-1
  849.     open_top
  850.     print_my(4,"Du mußt dich schon etwas genauer ausdrücken.")
  851.     close_top
  852.     ERROR 100
  853.   ENDIF
  854. RETURN
  855. '
  856. ' ****   Service-Routinen   ****
  857. '
  858. PROCEDURE errhand
  859.   ON ERROR GOSUB errhand
  860.   '
  861.   GOSUB frei
  862.   '
  863.   IF ontop!
  864.     ontop!=FALSE
  865.     ex%=s_ex%
  866.     ey%=s_ey%
  867.     bx%=s_bx%
  868.     by%=s_by%
  869.     cx%=s_cx%
  870.     cy%=s_cy%
  871.   ENDIF
  872.   DEFMOUSE 0
  873.   IF ERR<>100
  874.     open_top
  875.     print_csf(" FEHLER --- ERROR --- MISTHARKE --- AUSWURF ")
  876.     print_cs(" ")
  877.     print_csf("Oh Jeojeh .........................")
  878.     print_cs(" ")
  879.     print_cs(" ")
  880.     print_cs(" ")
  881.     print_cs(" ")
  882.     print_cs(" ")
  883.     print_cs(" ")
  884.     print_cs(" ")
  885.     print_cs(" ")
  886.     print_cs(" ")
  887.     print_cs(" ")
  888.     print_csf("Es ist der Fehler Nummer "+STR$(ERR)+" aufgetreten!")
  889.     print_csf("Im Klartext zum Mitschreiben : ")
  890.     print_csf(@get_klar_err$(ERR))
  891.     print_cs(" ")
  892.     ALERT 2,"  Wat nu (Wang lu) ? ",1,"Abbruch|Weiter",t%
  893.     IF t%=1
  894.       GOSUB beenden
  895.     ENDIF
  896.   ENDIF
  897.   IF ontop!
  898.     ontop!=FALSE
  899.     ex%=s_ex%
  900.     ey%=s_ey%
  901.     bx%=s_bx%
  902.     by%=s_by%
  903.     cx%=s_cx%
  904.     cy%=s_cy%
  905.   ENDIF
  906.   reset!=TRUE
  907.   RESUME main
  908. RETURN
  909. '
  910. FUNCTION get_klar_err$(num%)
  911.   LOCAL a$,len%
  912.   a$=MID$(ERR$(num%),5)
  913.   len%=INSTR(a$,"]")-1
  914.   a$=MID$(a$,1,len%)
  915.   FOR len%=1 TO LEN(a$)
  916.     IF MID$(a$,len%,1)="|"
  917.       MID$(a$,len%,1)=","
  918.     ENDIF
  919.   NEXT len%
  920.   RETURN a$
  921. ENDFUNC
  922. '
  923. PROCEDURE beenden
  924.   IF acc!
  925.     ~WIND_CLOSE(handle&)
  926.     ~WIND_DELETE(handle&)
  927.     handle&=-1
  928.     m4&=-1
  929.   ELSE
  930.     GOSUB rs_save
  931.     GOSUB gdos_exit
  932.     IF menbar!
  933.       ~MENU_BAR(adr1%,0)
  934.       ~RSRC_FREE()
  935.     ENDIF
  936.     ~MFREE(scrbuf%)
  937.     close_vworkstation(vdihandle&)
  938.     V~H=-1
  939.     RESERVE
  940.     ON ERROR
  941.     ~APPL_EXIT()
  942.     END
  943.   ENDIF
  944. RETURN
  945. '
  946. ' **** Adventure-Treiber ****
  947. ' >>>> BUUUM V1.0        <<<<
  948. '
  949. PROCEDURE io_ein
  950.   IF menbar!
  951.     ~MENU_IENABLE(adr1%,save&,1)
  952.     ~MENU_IENABLE(adr1%,load&,1)
  953.     ~MENU_IENABLE(adr1%,rsave&,1)
  954.     ~MENU_IENABLE(adr1%,rload&,1)
  955.     ~MENU_IENABLE(adr1%,neus&,1)
  956.   ENDIF
  957. RETURN
  958. '
  959. PROCEDURE io_aus
  960.   IF menbar!
  961.     ~MENU_IENABLE(adr1%,save&,0)
  962.     ~MENU_IENABLE(adr1%,load&,0)
  963.     ~MENU_IENABLE(adr1%,rsave&,0)
  964.     ~MENU_IENABLE(adr1%,rload&,0)
  965.     ~MENU_IENABLE(adr1%,neus&,0)
  966.   ENDIF
  967. RETURN
  968. '
  969. PROCEDURE intro
  970.   GOSUB io_aus
  971.   ontop!=TRUE
  972.   no_redraw!=TRUE
  973.   GOSUB gdos_init
  974.   GOSUB vorspann
  975.   IF BIOS(11,-1)=0
  976.     GOSUB ges
  977.   ENDIF
  978.   no_redraw!=FALSE
  979.   ontop!=FALSE
  980.   GOSUB io_ein
  981.   GOSUB force_wred
  982. RETURN
  983. '
  984. PROCEDURE draw_verbs
  985.   LOCAL t%,x%,y%
  986.   '
  987.   sv_sx%=sx%
  988.   '
  989.   IF GDOS? AND prop!
  990.     vx%=80/5
  991.     sx%=8
  992.   ELSE
  993.     vx%=(bx%/sx%)/5
  994.   ENDIF
  995.   '
  996.   vy%=maxv&/5+1
  997.   '
  998.   FOR t%=0 TO maxv&
  999.     y%=t%/5
  1000.     x%=(t%-5*y%)*vx%
  1001.     GOSUB print_xy(-x%,y%+verbf%,vk$(t%))
  1002.   NEXT t%
  1003.   IF inv$<>@get_inv$
  1004.     invz%=0
  1005.     inv$=@get_inv$
  1006.   ENDIF
  1007.   t%=LEN(inv$)
  1008.   IF t%>0
  1009.     GOSUB print_xy(-10,invf%,MID$(inv$,1+20*invz%,20))
  1010.     GOSUB print_xy(-40,invf%,"<")
  1011.     GOSUB print_xy(-50,invf%,">")
  1012.   ENDIF
  1013.   sx%=sv_sx%
  1014. RETURN
  1015. '
  1016. PROCEDURE eingabe
  1017.   LOCAL raus!,a$,i%,t%,x%,y%,k%
  1018.   raus!=FALSE
  1019.   '
  1020.   bef$=""
  1021.   o1$=""
  1022.   o2$=""
  1023.   pr$=""
  1024.   GOSUB show_eingabe
  1025.   '
  1026.   IF inv$<>@get_inv$
  1027.     invz%=0
  1028.     inv$=@get_inv$
  1029.   ENDIF
  1030.   t%=LEN(inv$)
  1031.   IF t%>0
  1032.     GOSUB print_xy(-10,invf%,MID$(inv$,1+20*invz%,20))
  1033.     GOSUB print_xy(-40,invf%,"<")
  1034.     GOSUB print_xy(-50,invf%,">")
  1035.   ENDIF
  1036.   '
  1037.   sv_sx%=sx%
  1038.   '
  1039.   IF GDOS? AND prop!
  1040.     sx%=8
  1041.   ENDIF
  1042.   '
  1043.   in$=""
  1044.   status%=0
  1045.   '
  1046.   REPEAT
  1047.     IF fs!=TRUE
  1048.       x%=mx%-fx&+wx&(m4&)
  1049.       y%=my%-fy&+wy&(m4&)
  1050.       fs!=FALSE
  1051.     ELSE
  1052.       maus_w(x%,y%,k%)
  1053.     ENDIF
  1054.     '
  1055.     SUB x%,ex%
  1056.     SUB y%,ey%
  1057.     '
  1058.     x%=x%/sx%
  1059.     y%=y%/sy%
  1060.     '
  1061.     IF y%=inpf%
  1062.       IF in$<>""
  1063.         raus!=TRUE
  1064.       ENDIF
  1065.     ENDIF
  1066.     '
  1067.     bug!=FALSE
  1068.     IF y%=invf% AND status%>0 AND LEN(inv$)>0
  1069.       IF x%=40 AND invz%>0
  1070.         DEC invz%
  1071.         GOSUB print_xy(-10,invf%,MID$(inv$,1+20*invz%,20))
  1072.       ENDIF
  1073.       IF x%=50 AND invz%<LEN(inv$)/20-1
  1074.         INC invz%
  1075.         GOSUB print_xy(-10,invf%,MID$(inv$,1+20*invz%,20))
  1076.       ENDIF
  1077.       IF x%>10 AND x%<30
  1078.         IF status%<>3
  1079.           status%=2
  1080.           o1$=TRIM$(MID$(inv$,1+20*invz%,20))
  1081.         ELSE
  1082.           o2$=TRIM$(MID$(inv$,1+20*invz%,20))
  1083.         ENDIF
  1084.         show_eingabe
  1085.       ENDIF
  1086.       notmaus_w
  1087.       bug!=TRUE
  1088.     ENDIF
  1089.     '
  1090.     IF y%=invf% AND LEN(inv$)>0 AND bug!=FALSE
  1091.       IF x%=40 AND invz%>0
  1092.         DEC invz%
  1093.         GOSUB print_xy(-10,invf%,MID$(inv$,1+20*invz%,20))
  1094.       ENDIF
  1095.       IF x%=50 AND invz%<LEN(inv$)/20-1
  1096.         INC invz%
  1097.         GOSUB print_xy(-10,invf%,MID$(inv$,1+20*invz%,20))
  1098.       ENDIF
  1099.       notmaus_w
  1100.     ENDIF
  1101.     '
  1102.     IF y%>=verbf% AND y%<=verbf%+4
  1103.       SUB y%,verbf%
  1104.       x%=x%/vx%
  1105.       IF y%*5+x%<=maxv&
  1106.         bef$=vk$(y%*5+x%)
  1107.       ENDIF
  1108.       status%=1
  1109.       o1$=""
  1110.       o2$=""
  1111.       pr$=""
  1112.       show_eingabe
  1113.     ENDIF
  1114.     '
  1115.     IF y%=objf%+1 AND status%>0 AND status%<=2
  1116.       SUB y%,objf%+1
  1117.       x%=x%+1
  1118.       status%=2
  1119.       a$=@print_objekts$(raum&)
  1120.       '
  1121.       IF x%>17 AND x%<LEN(a$)
  1122.         i%=x%
  1123.         komma!=FALSE
  1124.         WHILE i%>15 AND NOT komma!
  1125.           IF MID$(a$,i%,1)=","
  1126.             komma!=TRUE
  1127.           ENDIF
  1128.           DEC i%
  1129.         WEND
  1130.         '
  1131.         t%=x%
  1132.         komma!=FALSE
  1133.         WHILE t%<LEN(a$) AND NOT komma!
  1134.           IF MID$(a$,t%,1)=","
  1135.             komma!=TRUE
  1136.           ENDIF
  1137.           INC t%
  1138.         WEND
  1139.         '
  1140.         IF t%=LEN(a$)
  1141.           o1$=MID$(a$,i%+3)
  1142.         ELSE
  1143.           IF t%-i%-4>0
  1144.             o1$=MID$(a$,i%+3,t%-i%-4)
  1145.           ENDIF
  1146.         ENDIF
  1147.         show_eingabe
  1148.       ENDIF
  1149.     ENDIF
  1150.     '
  1151.     IF status%=2
  1152.       IF UPPER$(bef$)="ÖFFNE"
  1153.         pr$="mit"
  1154.         status%=3
  1155.         show_eingabe
  1156.       ENDIF
  1157.       IF UPPER$(bef$)="GIB"
  1158.         pr$="an"
  1159.         status%=3
  1160.         show_eingabe
  1161.       ENDIF
  1162.     ENDIF
  1163.     '
  1164.     IF status%=1
  1165.       IF UPPER$(bef$)="GEHE"
  1166.         pr$="zu:"
  1167.         show_eingabe
  1168.       ENDIF
  1169.       IF UPPER$(bef$)="SPRECHE"
  1170.         pr$="mit"
  1171.         show_eingabe
  1172.       ENDIF
  1173.       IF UPPER$(bef$)="SETZE"
  1174.         pr$="auf"
  1175.         show_eingabe
  1176.       ENDIF
  1177.     ENDIF
  1178.     '
  1179.     IF y%=objf%+1 AND status%=3
  1180.       SUB y%,objf%+1
  1181.       x%=x%+1
  1182.       status%=4
  1183.       a$=@print_objekts$(raum&)
  1184.       '
  1185.       IF x%>17 AND x%<LEN(a$)
  1186.         i%=x%
  1187.         komma!=FALSE
  1188.         WHILE i%>15 AND NOT komma!
  1189.           IF MID$(a$,i%,1)=","
  1190.             komma!=TRUE
  1191.           ENDIF
  1192.           DEC i%
  1193.         WEND
  1194.         '
  1195.         t%=x%
  1196.         komma!=FALSE
  1197.         WHILE t%<LEN(a$) AND NOT komma!
  1198.           IF MID$(a$,t%,1)=","
  1199.             komma!=TRUE
  1200.           ENDIF
  1201.           INC t%
  1202.         WEND
  1203.         '
  1204.         IF t%=LEN(a$)
  1205.           o2$=MID$(a$,i%+3)
  1206.         ELSE
  1207.           IF t%-i%-4>0
  1208.             o2$=MID$(a$,i%+3,t%-i%-4)
  1209.           ELSE
  1210.             status%=3
  1211.           ENDIF
  1212.         ENDIF
  1213.         show_eingabe
  1214.       ENDIF
  1215.     ENDIF
  1216.     '
  1217.     PAUSE 10
  1218.   UNTIL raus!
  1219.   GOSUB print_xy(0,inpf%,"                                        ")
  1220.   in$=TRIM$(in$)
  1221.   sx%=sv_sx%
  1222. RETURN
  1223. '
  1224. PROCEDURE show_eingabe
  1225.   GOSUB print_xy(0,inpf%,"                                        ")
  1226.   deftxt(1,1,0,fntgr%)
  1227.   in$=bef$+" "+o1$+" "+pr$+" "+o2$
  1228.   IF UPPER$(bef$)="GEHE" OR UPPER$(bef$)="SPRECHE"
  1229.     GOSUB print_xy(0,inpf%,bef$+" "+pr$+" "+o1$)
  1230.   ELSE
  1231.     GOSUB print_xy(0,inpf%,in$)
  1232.   ENDIF
  1233.   deftxt(1,0,0,fntgr%)
  1234. RETURN
  1235. '
  1236. FUNCTION get_crc
  1237.   LOCAL sum%,t%
  1238.   sum%=0
  1239.   FOR t%=0 TO DIM?(ob&())-1
  1240.     ADD sum%,ob&(t%)
  1241.   NEXT t%
  1242.   RETURN sum%
  1243. ENDFUNC
  1244. '
  1245. PROCEDURE interpreter
  1246.   LOCAL retraum&,x%,y%,checksum%
  1247.   retraum&=raum&
  1248.   checksum%=@get_crc
  1249.   IF vk&<6
  1250.     IF v&(raum&,vk&+1)<0
  1251.       ON ABS(v&(raum&,vk&+1)) GOSUB zf,abg,luft_sturz
  1252.     ELSE
  1253.       IF v&(raum&,vk&+1)=0
  1254.         z%=RANDOM(3)
  1255.         SELECT z%
  1256.         CASE 0
  1257.           topic("In diese Richtung führt kein Weg!")
  1258.         CASE 1
  1259.           topic("Boing !!!")
  1260.         CASE 2
  1261.           topic("Da geht's nicht long!")
  1262.         DEFAULT
  1263.           topic("Selbst DEIN Holzkopf kommt DA nicht durch!")
  1264.         ENDSELECT
  1265.         '
  1266.       ELSE
  1267.         '
  1268.         IF dunkel! AND NOT licht!
  1269.           IF lastraum&<>v&(raum&,vk&+1)
  1270.             topic("Als du weitergehst, stolperst du leider in der Dunkelheit.")
  1271.             GOSUB tod("Du bist über deine Füße gestolpert (zu Tode versteht sich).")
  1272.           ENDIF
  1273.         ENDIF
  1274.         '
  1275.         IF NOT reset!
  1276.           lastraum&=raum&
  1277.           raum&=v&(raum&,vk&+1)
  1278.           go!=TRUE
  1279.         ENDIF
  1280.       ENDIF
  1281.     ENDIF
  1282.   ENDIF
  1283.   SELECT vk&
  1284.   CASE 6
  1285.     ALERT 2,"Willst du wirklich |neustarten? |",2," JA |NEIN",t%
  1286.     IF t%=1
  1287.       GOSUB warm_start
  1288.     ENDIF
  1289.   CASE 7
  1290.     GOSUB inv
  1291.   CASE 9
  1292.     GOSUB save
  1293.   CASE 8
  1294.     GOSUB load
  1295.   CASE 10
  1296.     GOSUB ramsave
  1297.   CASE 11
  1298.     GOSUB ramload
  1299.   ENDSELECT
  1300.   IF vk&>11
  1301.     SUB vk&,11
  1302.     ON vk& GOSUB betr,unter,geh,nimm,lege,spr,set,gib,versp,spl,off,schalt,wwi
  1303.   ENDIF
  1304.   IF retraum&<>raum&
  1305.     GOSUB force_wred
  1306.   ELSE
  1307.     IF checksum%<>@get_crc
  1308.       GOSUB set_offset(m4&)
  1309.       GOSUB print_xy(0,objf%+1,SPACE$(75))
  1310.       deftxt(1,1,0,fntgr%)
  1311.       GOSUB print_xy(0,-(objf%+1),@print_objekts$(raum&))
  1312.       deftxt(1,0,0,fntgr%)
  1313.     ENDIF
  1314.     GOSUB statusline
  1315.     IF fl!(16)
  1316.       deftxt(1,1,0,fntgr%)
  1317.       print_xy(-60,invf%,"Countdown:"+STR$(buum%)+" ")
  1318.       deftxt(1,0,0,fntgr%)
  1319.     ENDIF
  1320.   ENDIF
  1321. RETURN
  1322. '
  1323. '   I/O-Routinen
  1324. '
  1325. PROCEDURE save
  1326.   clear_events
  1327.   a$=CHR$(GEMDOS(25)+65)+":\*.adv"
  1328.   FILESELECT #"Spiel auf Disk bannen",a$,"",file$
  1329.   IF file$<>""
  1330.     IF RIGHT$(file$,4)<>".ADV"
  1331.       file$=file$+".adv"
  1332.     ENDIF
  1333.     '
  1334.     sperr
  1335.     IF EXIST(file$)
  1336.       ALERT 2,"Hoppalahopp!     |Der Spielstand ist schon da!|Überschreiben?",2," JA |NEIN",t%
  1337.       IF t%=2
  1338.         file$=""
  1339.         ALERT 1,"Spielstandspeichern |abgebrochen!",1," OK ",t%
  1340.       ENDIF
  1341.     ENDIF
  1342.     '
  1343.     IF file$<>""
  1344.       DEFMOUSE 2
  1345.       OPEN "O",#1,file$
  1346.       WRITE #1,"HQ1-004"
  1347.       WRITE #1,score&
  1348.       WRITE #1,raum&
  1349.       WRITE #1,lastraum&
  1350.       WRITE #1,kagg%
  1351.       WRITE #1,stufe%
  1352.       WRITE #1,buum%
  1353.       FOR t&=0 TO maxn&
  1354.         WRITE #1,ob&(t&)
  1355.       NEXT t&
  1356.       FOR t&=0 TO maxflag&
  1357.         WRITE #1,fl!(t&)
  1358.       NEXT t&
  1359.       FOR t&=0 TO maxsf%
  1360.         WRITE #1,sf!(t&)
  1361.       NEXT t&
  1362.       WRITE #1,v&(16,3)
  1363.       WRITE #1,v&(15,3)
  1364.       WRITE #1,v&(27,1)
  1365.       WRITE #1,v&(34,3)
  1366.       WRITE #1,v&(41,5)
  1367.       WRITE #1,zug&
  1368.       CLOSE #1
  1369.       DEFMOUSE 0
  1370.       topic("Spielstand ist gebannt.")
  1371.     ENDIF
  1372.     frei
  1373.   ENDIF
  1374. RETURN
  1375. '
  1376. PROCEDURE ramsave
  1377.   LOCAL t%
  1378.   ALERT 2,"Spielstand wirklich |ins RAM packen? | ",1," Jo |Nöö",t%
  1379.   IF t%=1
  1380.     gilti!=TRUE
  1381.     s_score&=score&
  1382.     s_raum&=raum&
  1383.     s_lastraum&=lastraum&
  1384.     s_kagg%=kagg%
  1385.     s_stufe%=stufe%
  1386.     s_buum%=buum%
  1387.     FOR t&=0 TO maxn&
  1388.       s_ob&(t&)=ob&(t&)
  1389.     NEXT t&
  1390.     FOR t&=0 TO maxflag&
  1391.       s_fl!(t&)=fl!(t&)
  1392.     NEXT t&
  1393.     FOR t&=0 TO maxsf%
  1394.       s_sf!(t&)=sf!(t&)
  1395.     NEXT t&
  1396.     s_1&=v&(16,3)
  1397.     s_2&=v&(15,3)
  1398.     s_3&=v&(27,1)
  1399.     s_4&=v&(34,3)
  1400.     s_5&=v&(41,5)
  1401.     s_6&=zug&
  1402.   ENDIF
  1403. RETURN
  1404. '
  1405. PROCEDURE rs_save
  1406.   IF s_raum&>0
  1407.     sperr
  1408.     file$="ramsave.adv"
  1409.     clear_events
  1410.     DEFMOUSE 2
  1411.     OPEN "O",#1,file$
  1412.     WRITE #1,"HQ1-004"
  1413.     WRITE #1,s_score&
  1414.     WRITE #1,s_raum&
  1415.     WRITE #1,s_lastraum&
  1416.     WRITE #1,s_kagg%
  1417.     WRITE #1,s_stufe%
  1418.     WRITE #1,s_buum%
  1419.     FOR t&=0 TO maxn&
  1420.       WRITE #1,s_ob&(t&)
  1421.     NEXT t&
  1422.     FOR t&=0 TO maxflag&
  1423.       WRITE #1,s_fl!(t&)
  1424.     NEXT t&
  1425.     FOR t&=0 TO maxsf%
  1426.       WRITE #1,s_sf!(t&)
  1427.     NEXT t&
  1428.     WRITE #1,s_1&
  1429.     WRITE #1,s_2&
  1430.     WRITE #1,s_3&
  1431.     WRITE #1,s_4&
  1432.     WRITE #1,s_5&
  1433.     WRITE #1,s_6&
  1434.     CLOSE #1
  1435.     DEFMOUSE 0
  1436.     frei
  1437.   ENDIF
  1438. RETURN
  1439. '
  1440. PROCEDURE rs_load
  1441.   LOCAL t%
  1442.   sperr
  1443.   file$="ramsave.adv"
  1444.   IF EXIST(file$)
  1445.     '
  1446.     OPEN "I",#1,file$
  1447.     DEFMOUSE 2
  1448.     INPUT #1,a$
  1449.     IF a$="HQ1-004"
  1450.       INPUT #1,s_score&
  1451.       INPUT #1,s_raum&
  1452.       INPUT #1,s_lastraum&
  1453.       INPUT #1,s_kagg%
  1454.       INPUT #1,s_stufe%
  1455.       INPUT #1,s_buum%
  1456.       FOR t&=0 TO maxn&
  1457.         INPUT #1,s_ob&(t&)
  1458.       NEXT t&
  1459.       FOR t&=0 TO maxflag&
  1460.         INPUT #1,s_fl!(t&)
  1461.       NEXT t&
  1462.       FOR t&=0 TO maxsf%
  1463.         INPUT #1,s_sf!(t&)
  1464.       NEXT t&
  1465.       INPUT #1,s_1&
  1466.       INPUT #1,s_2&
  1467.       INPUT #1,s_3&
  1468.       INPUT #1,s_4&
  1469.       INPUT #1,s_5&
  1470.       INPUT #1,s_6&
  1471.       alt_raum&=-1
  1472.       gilti!=TRUE
  1473.     ENDIF
  1474.     DEFMOUSE 0
  1475.     CLOSE #1
  1476.   ENDIF
  1477.   frei
  1478. RETURN
  1479. '
  1480. PROCEDURE ramload
  1481.   LOCAL t%
  1482.   IF gilti!
  1483.     ALERT 2,"Spielstand wirklich aus |den Eingeweiden holen? | ",1,"Bitte|Danke",t%
  1484.     IF t%=1
  1485.       score&=s_score&
  1486.       raum&=s_raum&
  1487.       lastraum&=raum&
  1488.       kagg%=s_kagg%
  1489.       stufe%=s_stufe%
  1490.       buum%=s_buum%
  1491.       FOR t&=0 TO maxn&
  1492.         ob&(t&)=s_ob&(t&)
  1493.       NEXT t&
  1494.       FOR t&=0 TO maxflag&
  1495.         fl!(t&)=s_fl!(t&)
  1496.       NEXT t&
  1497.       FOR t&=0 TO maxsf%
  1498.         sf!(t&)=s_sf!(t&)
  1499.       NEXT t&
  1500.       v&(16,3)=s_1&
  1501.       v&(15,3)=s_2&
  1502.       v&(27,1)=s_3&
  1503.       v&(34,3)=s_4&
  1504.       v&(41,5)=s_5&
  1505.       zug&=s_6&
  1506.       alt_raum&=-1
  1507.       force_wred
  1508.     ENDIF
  1509.   ELSE
  1510.     topic("Wenn nichts in seinen rostigen Eingeweiden (= RAM-Speicher des Computers) ist, kann ich folglich auch nichts aus diesen holen.")
  1511.   ENDIF
  1512. RETURN
  1513. '
  1514. PROCEDURE load
  1515.   clear_events
  1516.   a$=CHR$(GEMDOS(25)+65)+":\*.adv"
  1517.   FILESELECT #"Spiel von Disk entbannen",a$,"",file$
  1518.   IF file$<>""
  1519.     sperr
  1520.     DEFMOUSE 2
  1521.     OPEN "I",#1,file$
  1522.     INPUT #1,k$
  1523.     IF k$<>"HQ1-004"
  1524.       DEFMOUSE 0
  1525.       topic("Dieser Spielstand stammt von einem anderen Programm. Kram mal die richtige Datei raus!")
  1526.       alt_raum&=-1
  1527.     ELSE
  1528.       INPUT #1,score&
  1529.       INPUT #1,raum&
  1530.       INPUT #1,lastraum&
  1531.       INPUT #1,kagg%
  1532.       INPUT #1,stufe%
  1533.       INPUT #1,buum%
  1534.       FOR t&=0 TO maxn&
  1535.         INPUT #1,ob&(t&)
  1536.       NEXT t&
  1537.       FOR t&=0 TO maxflag&
  1538.         INPUT #1,fl!(t&)
  1539.       NEXT t&
  1540.       FOR t&=0 TO maxsf%
  1541.         INPUT #1,sf!(t&)
  1542.       NEXT t&
  1543.       INPUT #1,v&(16,3)
  1544.       INPUT #1,v&(15,3)
  1545.       INPUT #1,v&(27,1)
  1546.       INPUT #1,v&(34,3)
  1547.       INPUT #1,v&(41,5)
  1548.       INPUT #1,zug&
  1549.       DEFMOUSE 0
  1550.       clear_events
  1551.       topic("Spielstand ist entbannt.")
  1552.     ENDIF
  1553.     CLOSE #1
  1554.     frei
  1555.   ENDIF
  1556. RETURN
  1557. '
  1558. PROCEDURE inv
  1559.   LOCAL y%,gef!,t&
  1560.   GOSUB open_top
  1561.   gef!=FALSE
  1562.   deftxt(1,4,0,fntgr%)
  1563.   print_xy(0,0,"Momentan in den Sackleinen : ")
  1564.   deftxt(1,0,0,fntgr%)
  1565.   y%=2
  1566.   FOR t&=0 TO maxn&
  1567.     IF ob&(t&)=-1
  1568.       print_xy(0,y%,nom$(t&))
  1569.       INC y%
  1570.       gef!=TRUE
  1571.     ENDIF
  1572.   NEXT t&
  1573.   IF gef!=FALSE
  1574.     print_xy(0,2,"nüscht")
  1575.   ENDIF
  1576.   GOSUB close_top
  1577. RETURN
  1578. '
  1579. FUNCTION get_inv$
  1580.   LOCAL a$,b$,t&
  1581.   a$=""
  1582.   gef!=FALSE
  1583.   FOR t&=0 TO maxn&
  1584.     IF ob&(t&)=-1
  1585.       b$=SPACE$(20)
  1586.       LSET b$=nom$(t&)
  1587.       a$=a$+b$
  1588.       gef!=TRUE
  1589.     ENDIF
  1590.   NEXT t&
  1591.   RETURN a$
  1592. ENDFUNC
  1593. '
  1594. PROCEDURE statusline
  1595.   LOCAL a$
  1596.   GOSUB print_xy(0,0,"Zuch : "+STR$(zug&))
  1597.   a$="Pkt. :"+STR$(score&)+" von "+STR$(maxscore&)
  1598.   GOSUB print_pxy((bx%-LEN(a$)*sx%)/2,0,a$)
  1599.   IF NOT (GDOS? AND prop!)
  1600.     GOSUB print_pxy(bx%-LEN(noa$)*sx%-sx%,0,noa$)
  1601.   ENDIF
  1602. RETURN
  1603. '
  1604. PROCEDURE wfk
  1605.   deftxt(1,4,0,fntgr%)
  1606.   print_my(by%/sy%-2,"Patsch auf die Maus ...")
  1607.   deftxt(1,0,0,fntgr%)
  1608.   GOSUB mausklick_w
  1609. RETURN
  1610. '
  1611. PROCEDURE dos(num%,zahl%)
  1612.   IF sf!(num%)=FALSE
  1613.     ADD score&,zahl%
  1614.     sf!(num%)=TRUE
  1615.   ENDIF
  1616. RETURN
  1617. '
  1618. PROCEDURE tod(a$)
  1619.   LOCAL len%,b$,c$
  1620.   GOSUB clrscr
  1621.   IF GDOS? AND prop!
  1622.     ~VQT_EXTENT("†",x1%,y1%,x2%,y2%,x3%,y3%,x4%,y4%)
  1623.     len%=(x2%-x1%)
  1624.     b$=STRING$(bx%/len%,"†")
  1625.   ELSE
  1626.     b$=STRING$(bx%/sx%,"†")
  1627.   ENDIF
  1628.   FOR x%=0 TO by%/sy%
  1629.     print_xy(0,x%,b$)
  1630.   NEXT x%
  1631.   cy%=3
  1632.   GOSUB print_csf(">>>  Es ist leider (?!?) passiert ....  <<<")
  1633.   ADD cy%,1
  1634.   GOSUB print_csf("Beim "+STR$(zug&)+". Zug  (Spielstand von "+STR$(score&)+":"+STR$(maxscore&)+")")
  1635.   ADD cy%,9
  1636.   GOSUB print_csf(" DU BIST (mause) TOT !!!")
  1637.   ADD cy%,1
  1638.   a$="| "+a$+" |"
  1639.   c$=STRING$(LEN(a$),"-")
  1640.   MID$(c$,1,1)="/"
  1641.   MID$(c$,LEN(a$),1)="\"
  1642.   GOSUB print_csf(c$)
  1643.   GOSUB print_csf(a$)
  1644.   MID$(c$,1,1)="\"
  1645.   MID$(c$,LEN(a$),1)="/"
  1646.   GOSUB print_csf(c$)
  1647.   ALERT 2," Willst du nochmal ? | ",1," JA |NEIN",t%
  1648.   IF t%=1
  1649.     warm_start
  1650.   ELSE
  1651.     GOSUB beenden
  1652.   ENDIF
  1653. RETURN
  1654. '
  1655. PROCEDURE adv_init
  1656.   LOCAL t&
  1657.   noa$="House Quest I"
  1658.   '
  1659.   no_redraw!=FALSE
  1660.   gilti!=FALSE
  1661.   w_red!=FALSE
  1662.   '
  1663.   DIM r_top$(32)
  1664.   GOSUB clear_tops
  1665.   '
  1666.   score&=0
  1667.   RESTORE adv_dat
  1668.   READ maxscore&
  1669.   zug&=0
  1670.   '
  1671.   READ maxraum&,maxflag&,raum&,maxsf%,maxobj&
  1672.   DIM r$(maxraum&),v&(maxraum&,6),fl!(maxflag&),s_fl!(maxflag&),sf!(maxsf%)
  1673.   DIM s_sf!(maxsf%),o$(maxobj&),md!(15)
  1674.   ARRAYFILL sf!(),FALSE
  1675.   ARRAYFILL fl!(),FALSE
  1676.   ARRAYFILL md!(),TRUE
  1677.   '
  1678.   fl!(10)=TRUE
  1679.   fl!(11)=TRUE
  1680.   fl!(12)=TRUE
  1681.   '
  1682.   RESTORE raum
  1683.   FOR t&=1 TO maxraum&
  1684.     a$=""
  1685.     REPEAT
  1686.       READ a$
  1687.       IF a$<>"#R"
  1688.         r$(t&)=r$(t&)+a$
  1689.       ENDIF
  1690.     UNTIL a$="#R"
  1691.   NEXT t&
  1692.   '
  1693.   RESTORE objtext
  1694.   FOR t&=0 TO maxobj&
  1695.     a$=""
  1696.     REPEAT
  1697.       READ a$
  1698.       IF a$<>"#R"
  1699.         o$(t&)=o$(t&)+a$
  1700.       ENDIF
  1701.     UNTIL a$="#R"
  1702.   NEXT t&
  1703.   '
  1704.   RESTORE link
  1705.   FOR t&=1 TO maxraum&
  1706.     FOR i&=1 TO 6
  1707.       READ v&(t&,i&)
  1708.     NEXT i&
  1709.   NEXT t&
  1710.   '
  1711.   RESTORE ps_data
  1712.   READ maxv&,maxn&,maxp&
  1713.   DIM ob&(maxn&),s_ob&(maxn&)
  1714.   DIM vk$(maxv&),nom$(maxn&),pr$(maxp&)
  1715.   RESTORE ps_vk
  1716.   FOR t&=0 TO maxv&
  1717.     READ vk$(t&)
  1718.   NEXT t&
  1719.   RESTORE ps_nom
  1720.   FOR t&=0 TO maxn&
  1721.     READ nom$(t&)
  1722.   NEXT t&
  1723.   RESTORE ps_pr
  1724.   FOR t&=0 TO maxp&
  1725.     READ pr$(t&)
  1726.     pr$(t&)=UPPER$(pr$(t&))
  1727.   NEXT t&
  1728.   RESTORE status
  1729.   FOR t&=0 TO maxn&
  1730.     READ ob&(t&)
  1731.   NEXT t&
  1732.   '
  1733.   textf%=0
  1734.   objf%=(by%/2+16)/sy%-1
  1735.   inpf%=objf%+3-1
  1736.   verbf%=inpf%+1
  1737.   IF fntgr%=6
  1738.     invf%=inpf%+6
  1739.   ELSE
  1740.     invf%=inpf%+7
  1741.   ENDIF
  1742.   '
  1743. RETURN
  1744. '
  1745. PROCEDURE warm_start
  1746.   LOCAL t&
  1747.   score&=0
  1748.   RESTORE adv_dat
  1749.   READ maxscore&
  1750.   zug&=0
  1751.   reset!=TRUE
  1752.   '
  1753.   READ maxraum&,maxflag&,raum&,maxsf%,maxobj&
  1754.   ARRAYFILL sf!(),FALSE
  1755.   ARRAYFILL fl!(),FALSE
  1756.   ARRAYFILL md!(),TRUE
  1757.   '
  1758.   fl!(10)=TRUE
  1759.   fl!(11)=TRUE
  1760.   fl!(12)=TRUE
  1761.   '
  1762.   RESTORE link
  1763.   FOR t&=1 TO maxraum&
  1764.     FOR i&=1 TO 6
  1765.       READ v&(t&,i&)
  1766.     NEXT i&
  1767.   NEXT t&
  1768.   '
  1769.   RESTORE status
  1770.   FOR t&=0 TO maxn&
  1771.     READ ob&(t&)
  1772.   NEXT t&
  1773.   '
  1774.   alt_raum&=-1
  1775.   lastraum&=-1
  1776.   '
  1777.   kagg%=0
  1778.   stufe%=0
  1779.   '
  1780.   cx%=0
  1781.   cy%=0
  1782.   '
  1783.   ex%=0
  1784.   ey%=0
  1785.   s_cx%=0
  1786.   s_cy%=0
  1787.   '
  1788.   s_ex%=0
  1789.   s_ey%=0
  1790.   '
  1791.   bx%=78*sx%
  1792.   by%=22*sy%
  1793.   s_bx%=bx%
  1794.   s_by%=by%
  1795.   '
  1796.   deftxt(1,0,0,fntgr%)
  1797. RETURN
  1798. '
  1799. PROCEDURE do_warm
  1800.   ON ERROR GOSUB errhand
  1801.   RESUME main
  1802. RETURN
  1803. '
  1804. FUNCTION get_short_raum$(num&)
  1805.   LOCAL a$,t&
  1806.   RESTORE short_name
  1807.   FOR t&=1 TO num&
  1808.     READ a$
  1809.   NEXT t&
  1810.   RETURN a$
  1811. ENDFUNC
  1812. '
  1813. FUNCTION print_objekts$(num&)
  1814.   LOCAL gef!,t&,sum$
  1815.   gef!=FALSE
  1816.   sum$="In deinem Blick: "
  1817.   FOR t&=0 TO maxn&
  1818.     IF ob&(t&)=num&
  1819.       sum$=sum$+nom$(t&)+", "
  1820.       gef!=TRUE
  1821.     ENDIF
  1822.   NEXT t&
  1823.   IF gef!=TRUE
  1824.     RETURN MID$(sum$,1,LEN(sum$)-2)
  1825.   ELSE
  1826.     RETURN sum$+"r.g.n (==> rein gar nichts)"
  1827.   ENDIF
  1828. ENDFUNC
  1829. '
  1830. bw:
  1831. DATA Norden,Süden,Westen,Ostern,Oben,Unten
  1832. '
  1833. FUNCTION print_richtung$(num&)
  1834.   LOCAL gef!,sum$,a$,t&
  1835.   gef!=FALSE
  1836.   RESTORE bw
  1837.   sum$="Mögliche Wege : "
  1838.   FOR t&=1 TO 6
  1839.     READ a$
  1840.     IF v&(num&,t&)<>0
  1841.       sum$=sum$+a$+", "
  1842.       gef!=TRUE
  1843.     ENDIF
  1844.   NEXT t&
  1845.   IF gef!=TRUE
  1846.     RETURN MID$(sum$,1,LEN(sum$)-2)
  1847.   ELSE
  1848.     RETURN sum$+"Keine"
  1849.   ENDIF
  1850. ENDFUNC
  1851. '
  1852. FUNCTION get_raum_des$(t%)
  1853.   LOCAL a$,b$,c$,index%
  1854.   a$=r$(t%)
  1855.   b$=""
  1856.   index%=1
  1857.   REPEAT
  1858.     c$=MID$(a$,index%,1)
  1859.     IF c$="#"
  1860.       c$=MID$(a$,index%+1,1)
  1861.       SELECT c$
  1862.       CASE "C"
  1863.         index%=index%+2
  1864.         b$=b$+CHR$(13)
  1865.       CASE "V"
  1866.         index%=index%+3
  1867.         fl1%=VAL(MID$(a$,index%,3))
  1868.         fl2%=VAL(MID$(a$,index%+4,2))
  1869.         ADD index%,7
  1870.         REPEAT
  1871.           c$=MID$(a$,index%,1)
  1872.           IF fl!(fl1%)=fl2% AND c$<>"]"
  1873.             b$=b$+c$
  1874.           ENDIF
  1875.           INC index%
  1876.         UNTIL c$="]"
  1877.       ENDSELECT
  1878.       DEC index%
  1879.     ELSE
  1880.       b$=b$+c$
  1881.     ENDIF
  1882.     INC index%
  1883.   UNTIL index%>LEN(a$)
  1884.   RETURN b$
  1885. ENDFUNC
  1886. '
  1887. PROCEDURE check_flag(t&,a$,num%,zahl%)
  1888.   IF fl!(t&)=TRUE
  1889.     topic("In Dortmund, ähh ... in Ordnung!")
  1890.     ob&(nom&)=-1
  1891.     dos(num%,zahl%)
  1892.   ELSE
  1893.     topic(a$)
  1894.   ENDIF
  1895. RETURN
  1896. '
  1897. PROCEDURE wwi
  1898.   LOCAL a$,z%
  1899.   a$="Das Wort zum Dienstag :/"
  1900.   z%=RANDOM(32766) MOD 15
  1901.   SELECT z%
  1902.   CASE 0
  1903.     a$=a$+"Du meinst, daß das jetzt gut war! Nicht wahr? Träum' weiter."
  1904.   CASE 1
  1905.     a$=a$+"Au weia! So kommst du nicht in 100 Jahren zur Lösung."
  1906.   CASE 2
  1907.     a$=a$+"Tzisses! Du bist von der Lösung so weit entfernt, wie Max von'ne Möhren."
  1908.   CASE 3
  1909.     a$=a$+"Ja nur weiter so, die nächste Falltür kommt bestimmt!"
  1910.   CASE 4
  1911.     a$=a$+"Nein, das war jetzt ganz kalt, um nicht zu sagen EISkalt."
  1912.   CASE 5
  1913.     a$=a$+"Ich nehme an, das ist dein erstes Adventure. Na dann kann ich deinen Bockmist verstehen, den du mit diesem Zug verzapft hast."
  1914.   CASE 6
  1915.     a$=a$+"Das tut weh. Neio, neio !"
  1916.   CASE 7
  1917.     a$=a$+"Lasses sein. Du kommst so eh nicht weiter."
  1918.   CASE 8
  1919.     a$=a$+"Das war gar nicht mal so übel, sprach der Dübel und verschwand in der Wand unerkannt. Aber das ist etwas völlig anderes."
  1920.   CASE 9
  1921.     a$=a$+"Mit deinen 'Spielzügen' hast du den Rechner so gründlich verwirrt, daß ein Absturz wohl nicht mehr lange auf sich warten läßt."
  1922.   CASE 10
  1923.     a$=a$+"Nein, ich will es nicht wissen, nein, nein,nein. Ich will nicht wissen, wo du das Adventuren gelernt bzw. nicht gelernt hast."
  1924.   CASE 11
  1925.     a$=a$+"Diesen Spielzug kann man leider nicht mehr mit gut bewerten, er war MISERABEL."
  1926.   CASE 12
  1927.     a$=a$+"Das war MUELL."
  1928.   CASE 13
  1929.     a$=a$+" Das war doch Emmenthaler, mit extra großen Löchern und Fettstufe 12."
  1930.   CASE 14
  1931.     a$=a$+"'Au weia', sprach der alte Häuptling der Indianer. Ich kann mich da nur anschließen."
  1932.   DEFAULT
  1933.     a$=a$+"Kein Kommentar!"
  1934.   ENDSELECT
  1935.   topic(a$)
  1936. RETURN
  1937. '
  1938. PROCEDURE inst_err(a$)
  1939.   PRINT
  1940.   PRINT "Bei der Initialsierung ist folgender Fehler aufgetreten :"
  1941.   PRINT
  1942.   PRINT a$
  1943.   PRINT
  1944.   PRINT "Das Programm kann leider nicht gestartet werden."
  1945.   PRINT
  1946.   IF acc!
  1947.     DO
  1948.       ~EVNT_MESAG(0)
  1949.     LOOP
  1950.   ELSE
  1951.     PRINT "Bitte eine beliebige Taste drücken ......."
  1952.     ~INP(2)
  1953.     END
  1954.   ENDIF
  1955. RETURN
  1956. '
  1957. PROCEDURE gigo
  1958.   LOCAL z%
  1959.   z%=RANDOM(32010) MOD 6
  1960.   SELECT z%
  1961.   CASE 0
  1962.     topic("Bitte ???")
  1963.   CASE 1
  1964.     topic("Das ist doch wohl völliger Schwachsinn!")
  1965.   CASE 2
  1966.     topic(" ??? ")
  1967.   CASE 3
  1968.     topic("Das ist L(Bl)öt(d)z(s)inn!")
  1969.   CASE 4
  1970.     topic("Das war ja wohl müllmäßiger MUELL!")
  1971.   DEFAULT
  1972.     topic("Das findest du jetzt gut, was ???")
  1973.   ENDSELECT
  1974. RETURN
  1975. '
  1976. ' ****     Reaktions-Routinen     ****
  1977. ' >>>>     HQ1                    <<<<
  1978. '
  1979. PROCEDURE betr
  1980.   IF dunkel! AND NOT licht!
  1981.     topic("Du kannst die Augen vor der Hand nicht sehen.")
  1982.   ELSE
  1983.     IF nom&=-1
  1984.       GOSUB topic("Was soll ich denn betrachten, häää...")
  1985.     ELSE
  1986.       IF ob&(nom&)=0 OR (ob&(nom&)<>raum& AND ob&(nom&)<>-1)
  1987.         topic("Ich weiß nicht, was du siehst, aber ich sehe dieses Objekt nicht.")
  1988.       ELSE
  1989.         sp_gef!=0
  1990.         GOSUB spc_betr
  1991.         IF sp_gef!=TRUE
  1992.           a$=o$(nom&)
  1993.           '
  1994.           SELECT nom&
  1995.           CASE 18
  1996.             IF fl!(4)
  1997.               a$=a$+" Sie liegen bewußtlos da."
  1998.             ELSE
  1999.               a$=a$+" Sie agieren. Mehr will ich dazu nicht sagen."
  2000.             ENDIF
  2001.           CASE 36
  2002.             IF fl!(13)
  2003.               a$=a$+" Er ist offen."
  2004.             ELSE
  2005.               a$=a$+" Er ist geschlossen."
  2006.             ENDIF
  2007.           CASE 45
  2008.             IF NOT fl!(21)
  2009.               a$=a$+" Sie ist leer."
  2010.             ELSE
  2011.               a$=a$+" Eine Disk ist drin."
  2012.             ENDIF
  2013.           CASE 37
  2014.             IF fl!(14)
  2015.               a$=a$+" Es ist offen."
  2016.             ELSE
  2017.               a$=a$+" Es ist geschlossen."
  2018.             ENDIF
  2019.           CASE 49 TO 52
  2020.             IF fl!(9+nom&-49)
  2021.               a$=a$+" Er ist auf EIN."
  2022.             ELSE
  2023.               a$=a$+" Er ist auf AUS."
  2024.             ENDIF
  2025.           CASE 33
  2026.             IF fl!(22)
  2027.               a$=a$+" Er liegt einfach so da."
  2028.             ELSE
  2029.               a$=a$+" Der AUTOR hat ihn fest in seiner Hand."
  2030.             ENDIF
  2031.           ENDSELECT
  2032.           '
  2033.           GOSUB topic(a$)
  2034.           '
  2035.         ENDIF
  2036.       ENDIF
  2037.     ENDIF
  2038.   ENDIF
  2039. RETURN
  2040. '
  2041. PROCEDURE spc_betr
  2042.   IF nom&=5
  2043.     open_top
  2044.     print_cs(" ")
  2045.     print_cs("Vertretungsplan vom 01.04.1997       Donnerstag")
  2046.     print_cs(" ")
  2047.     print_cs("Ottohans       1. fällt aus")
  2048.     print_cs("         2.bis 3. Nitschke")
  2049.     print_cs("               4. wird auf 2.5.verschoben")
  2050.     print_cs(" ")
  2051.     print_cs("Schulte        1. fällt aus, Overhead")
  2052.     print_cs(" ")
  2053.     print_cs("                              Gez. Amtmann")
  2054.     close_top
  2055.   ELSE IF nom&=39
  2056.     open_top
  2057.     print_csf("hier ist der autor")
  2058.     a$="wie sie sicher schon bemerkt haben, befindet sich das "
  2059.     a$=a$+"weltverwaltungsgebäude samt amtmann in meiner gewalt. "
  2060.     a$=a$+"wagen sie es nicht, einen befreiungsversuch zu starten, "
  2061.     a$=a$+"denn ich habe unter dem gebäude eine nuklearwaffe plaziert, "
  2062.     a$=a$+"die ich unverzüglich zur detonation bringen werde, falls "
  2063.     a$=a$+"meine forderungen nicht binnen 24 stunden erfüllt werden."
  2064.     printw(2,a$,FALSE)
  2065.     ADD cy%,8
  2066.     print_cs("ich fordere : ")
  2067.     print_cs("- freies geläut für mich und meine männer")
  2068.     print_cs("- 20 mio lünebests in nichtmarkierten bechern")
  2069.     print_cs(" ")
  2070.     print_cs("das ultimatum läuft morgen, 18 uhr ortszeit ab.")
  2071.     print_cs("gez. autor")
  2072.     close_top
  2073.   ELSE
  2074.     sp_gef!=TRUE
  2075.   ENDIF
  2076. RETURN
  2077. '
  2078. PROCEDURE lege
  2079.   IF nom&=-1
  2080.     gigo
  2081.   ELSE
  2082.     IF ob&(nom&)<>-1
  2083.       topic("Was man nicht hat, kann man auch nicht ablegen.")
  2084.     ELSE
  2085.       topic("Es liegt jetzt da so rum.")
  2086.       ob&(nom&)=raum&
  2087.     ENDIF
  2088.   ENDIF
  2089. RETURN
  2090. '
  2091. PROCEDURE nimm
  2092.   IF nom&=-1
  2093.     topic("Ja, was denn ???")
  2094.   ELSE
  2095.     IF ob&(nom&)=-1
  2096.       topic("Sag mal, bist du blind oder was? Das Objekt ist doch schon in deinem Beutel.")
  2097.     ELSE IF ob&(nom&)=0 OR ob&(nom&)<>raum&
  2098.       topic("Dieses Objekt ist nirgends zu sehen!")
  2099.     ELSE
  2100.       SELECT nom&
  2101.       CASE 48
  2102.         topic("Die Disk ist wieder in deiner (linken) Hand.")
  2103.         fl!(21)=FALSE
  2104.         ob&(48)=-1
  2105.       CASE 33
  2106.         IF fl!(22)
  2107.           topic("Okay!")
  2108.           ob&(33)=-1
  2109.           dos(0,10)
  2110.         ELSE
  2111.           topic("Der AUTOR steht (bzw. liegt) zwischen dir und dem Schüssel.")
  2112.         ENDIF
  2113.       CASE 41,42,43
  2114.         topic("Du brauchst den Hubschrauber nicht zu verstümmeln. Das ist absolut nicht notwendig.")
  2115.       CASE 38
  2116.         topic("Das Atom-Ei ist wohl etwas zu schwer für dich.")
  2117.       CASE 37
  2118.         topic("Was willst du mit dem blöden Gitter. Flöhe fangen?")
  2119.       CASE 36
  2120.         GOSUB unter
  2121.       CASE 27
  2122.         topic("Das war dein letzter Fehler...")
  2123.         topic("Der Executor sagt : 'MAKE MY DAY!'")
  2124.         topic("Aha, ein C.E. Fan!")
  2125.         GOSUB tod("Der Executor hat dich eleminiert.")
  2126.       CASE 32
  2127.         topic("Als du den AUTOR nehmen willst, wird dieser dadurch geweckt. Und dann ...")
  2128.         topic("Zur Strafe für dein Vergehen wird die Diskette (ja die in deinem Laufwerk)  formatiert....(Hä, Hä)")
  2129.         a$="Hinweis des Programmierers:/Der AUTOR kennt sich glücklicherweise "
  2130.         a$=a$+"mit ST's nicht sonderlich gut aus. Deshalb weiß er auch nicht, "
  2131.         a$=a$+"wie er das Formatieren programmieren soll. Glück gehabt."
  2132.         topic(a$)
  2133.         GOSUB tod("Der AUTOR hat gesprochen - Du bist weg vom Fenster!")
  2134.       CASE 49 TO 52
  2135.         topic("Der Sicherungskasten könnte das als persönlichen Angriff verstehen.")
  2136.       CASE 19
  2137.         topic("Was willst du mit dem ganzen Plunder.")
  2138.       CASE 12,8
  2139.         topic("Er wehrt sich so stark, daß es dir nicht möglich ist, ihn aufzunehmen.")
  2140.       CASE 13
  2141.         topic("Lüstling!")
  2142.       CASE 17,18,21,24,25,28,30,31,34
  2143.         topic("Bist du wahnsinnig!!!")
  2144.       CASE 16
  2145.         GOSUB check_flag(4,"Die Herren und die Dame verhindern dieses Vorhaben.",1,3)
  2146.       CASE 14
  2147.         GOSUB check_flag(3,"Die Lehrerin läßt dich nicht daran",2,5)
  2148.       CASE 0,5,6,7,15,29,40
  2149.         topic("Das ist zu schwer für dich.")
  2150.       CASE 26
  2151.         IF v&(16,3)=0
  2152.           topic("Der Pfarrer hindert dich dran.")
  2153.         ELSE
  2154.           topic("Da der Pfarrer betäubt ist, kein Problem.")
  2155.           ob&(nom&)=-1
  2156.           dos(3,5)
  2157.         ENDIF
  2158.       CASE 1,2,3,4,20,22,23,35,39
  2159.         z%=RANDOM(4)
  2160.         SELECT z%
  2161.         CASE 0
  2162.           topic("Wie eure Mordschaft befehlen.")
  2163.         CASE 1
  2164.           topic("Ei, Ei, Kapitän!")
  2165.         CASE 2
  2166.           topic("Euer Wunsch ist mir Befehl.")
  2167.         CASE 3
  2168.           topic("Ich habe es genommen.")
  2169.         ENDSELECT
  2170.         ob&(nom&)=-1
  2171.       CASE 5
  2172.         topic("Das Objekt ist zu stark befestigt.")
  2173.       CASE 10,11
  2174.         topic("Das ist Unsinn.")
  2175.       CASE 9
  2176.         GOSUB check_flag(0,"'Assistent' hindert dich dran.",3,5)
  2177.       DEFAULT
  2178.         topic("Was willst du mit dem Gerümpel, häh....?")
  2179.       ENDSELECT
  2180.     ENDIF
  2181.   ENDIF
  2182. RETURN
  2183. '
  2184. PROCEDURE geh
  2185.   LOCAL disk%
  2186.   disk%=1
  2187.   SELECT nom&
  2188.   CASE 0
  2189.     topic("Boiiiiing !")
  2190.   CASE 1
  2191.     topic("Ahh, das Bad in der Mülltonne. Sehr gesund!")
  2192.     tod("Du warst nicht zu überriechen.")
  2193.   CASE 2
  2194.     topic("Du legst die Banane vor dich und gehst rüber. Dabei stolperst du natürlich und schlägst der Länge nach hin.")
  2195.     topic("Mit dem Kopf auf den nackten Stein, das ist nicht gut.")
  2196.     tod("Was sollte das jetzt ????")
  2197.   CASE 3
  2198.     topic("Das Rotlichtviertel ist zwei Straßen weiter. Aber da warst du doch heute morgen schon.")
  2199.   CASE 6,7
  2200.     topic("Deine Haare sind zu lang. Außerdem lassen sie dich nicht in ihre Mitte.")
  2201.   CASE 21
  2202.     topic("Bitte ????")
  2203.   CASE 24,25,27,28,32,38,34
  2204.     topic("Näher würde ich mich nicht herantrauen.")
  2205.   CASE 45,46,8,10,12,17
  2206.     topic("Was willst du da?")
  2207.   CASE 18
  2208.     topic("Also ich bin wirklich von dir enttäuscht. Wirklich! Echt! Ehrlich! Glaubst mir wohl nicht?")
  2209.     topic("Bitte ....")
  2210.     open_top
  2211.     printw(1,"OUT OF INTERNAL MEMORY - USE FOLDR100.PRG TO GET MORE /SYSTEM HALTED",FALSE)
  2212.     DELAY 16
  2213.     close_top
  2214.     topic("Na gut, ich will ja nicht so sein.")
  2215.   CASE 13
  2216.     topic("Na, na, du bist im Dienst. Vergiß das nicht!")
  2217.   CASE 47
  2218.     open_top
  2219.     print_cs("MikroSocks - DemonstratingOperatingSystem")
  2220.     print_cs("Version 4.12 released 3/2/72 for System X-b542")
  2221.     print_cs(" ")
  2222.     x$="Command not found"
  2223.     REPEAT
  2224.       input_cs(20,CHR$(65+disk%*2)+":",com$)
  2225.       com$=UPPER$(com$)
  2226.       '
  2227.       IF INSTR(com$," ")<>0
  2228.         parm%=VAL(MID$(com$,INSTR(com$," ")+1))
  2229.         com$=MID$(com$,1,INSTR(com$," ")-1)
  2230.       ELSE
  2231.         parm%=0
  2232.       ENDIF
  2233.       '
  2234.       IF com$="VER"
  2235.         print_cs("MS-DOS Version  4.12 - Released 03.02.1972")
  2236.       ELSE IF com$="C:"
  2237.         disk%=1
  2238.       ELSE IF com$="DATE"
  2239.         print_cs("01.04.1997")
  2240.       ELSE IF com$="TIME"
  2241.         print_cs(TIME$)
  2242.       ELSE IF com$="A:"
  2243.         IF fl!(21)
  2244.           disk%=0
  2245.         ELSE
  2246.           DELAY 2
  2247.           print_cs("Drive not ready!")
  2248.         ENDIF
  2249.       ELSE IF com$="VIRUS"
  2250.         IF NOT fl!(21)
  2251.           print_cs(x$)
  2252.         ELSE
  2253.           IF parm%=0 OR parm%>4
  2254.             fl!(17)=TRUE
  2255.             fl!(18)=TRUE
  2256.             fl!(19)=TRUE
  2257.             fl!(20)=TRUE
  2258.           ELSE
  2259.             fl!(16+parm%)=TRUE
  2260.           ENDIF
  2261.           dos(4,6)
  2262.         ENDIF
  2263.       ELSE IF com$="DEVIRUS"
  2264.         IF NOT fl!(21)
  2265.           print_cs(x$)
  2266.         ELSE
  2267.           IF parm%=0 OR parm%>4
  2268.             fl!(17)=FALSE
  2269.             fl!(18)=FALSE
  2270.             fl!(19)=FALSE
  2271.             fl!(20)=FALSE
  2272.           ELSE
  2273.             fl!(16+parm%)=FALSE
  2274.           ENDIF
  2275.           dos(5,6)
  2276.         ENDIF
  2277.       ELSE IF com$="PACMAN"
  2278.         IF fl!(21)=FALSE
  2279.           print_cs(x$)
  2280.         ELSE
  2281.           print_cs("Im Dienst nicht erlaubt.")
  2282.         ENDIF
  2283.         dos(6,-5)
  2284.       ELSE IF com$="SEARCH"
  2285.         IF fl!(21)=FALSE
  2286.           print_cs(x$)
  2287.         ELSE
  2288.           print_cs("MS - program error ==> does not compute")
  2289.         ENDIF
  2290.       ELSE IF com$="HEIZUNG"
  2291.         IF fl!(17)
  2292.           print_cs("MS - program error ==> does not compute")
  2293.         ELSE
  2294.           GOSUB clrscr
  2295.           print_cs("Vereinigte Nationen - Hauptverwaltung")
  2296.           print_cs("Steuerkontrolle Blockheizkraftwerk")
  2297.           print_cs("Solleistung    : 12000KW")
  2298.           print_cs("Istleistung    : 11220KW")
  2299.           print_cs("Stromverbrauch : 33567KWh")
  2300.           print_cs(" ")
  2301.           input_cs(20,"Bitte Passwort eingeben : ",a$)
  2302.           IF UPPER$(a$)="NOONOOKEE"
  2303.             print_cs("Der Zugriff auf die Heizanlage ist")
  2304.             print_cs("wegen Wartungsarbeiten momentan nicht möglich.")
  2305.           ELSE
  2306.             print_cs("Falsches Passwort!")
  2307.           ENDIF
  2308.         ENDIF
  2309.       ELSE IF com$="ABOMBE"
  2310.         IF fl!(18)
  2311.           print_cs("MS - program error ==> does not compute")
  2312.         ELSE
  2313.           GOSUB clrscr
  2314.           print_cs("NukeControl V0.00")
  2315.           print_cs("Written by AUTOR")
  2316.           print_cs(" ")
  2317.           IF fl!(16)
  2318.             print_cs("Nuklearstatus : GO")
  2319.           ELSE
  2320.             print_cs("Nuklearstatus : STOP")
  2321.           ENDIF
  2322.           print_cs(" ")
  2323.           input_cs(40,"Enter password to change status : ",a$)
  2324.           print_cs(" ")
  2325.           IF UPPER$(a$)="NOONOOKEE"
  2326.             print_cs("Password correct!")
  2327.             IF (NOT fl!(16)) AND fl!(22)=FALSE
  2328.               close_top
  2329.               topic("Durch dein lautstarkes Atomgewurschtel hast du den AUTOR auf deine Fährte gebracht. Seine Häscher greifen dich ....")
  2330.               GOSUB tod("Ich möchte dir lieber nicht sagen, wie du gestorben bist.")
  2331.             ELSE
  2332.               dos(6,10)
  2333.             ENDIF
  2334.             IF NOT reset!
  2335.               fl!(16)=NOT fl!(16)
  2336.             ENDIF
  2337.           ELSE
  2338.             print_cs("Password incorrect! ")
  2339.           ENDIF
  2340.         ENDIF
  2341.       ELSE IF com$="MISSCON"
  2342.         IF fl!(19)
  2343.           print_cs("MS - program error ==> does not compute")
  2344.         ELSE
  2345.           print_cs("MISSCON - terminal does not match ")
  2346.         ENDIF
  2347.       ELSE IF com$="LABCON"
  2348.         IF fl!(20)
  2349.           print_cs("MS - program error ==> does not compute")
  2350.         ELSE
  2351.           GOSUB clrscr
  2352.           print_cs("Liste der Laborprojekte")
  2353.           print_cs(" ")
  2354.           print_cs("Projekt 4563-X - Skunk")
  2355.           print_cs("Projekt 5623-B - Red Potatoe")
  2356.           print_cs("Projekt 0034-A - Frosch")
  2357.           print_cs("Projekt 1034-Z - Megazillus")
  2358.           print_cs("END OF LIST ")
  2359.         ENDIF
  2360.       ELSE IF com$="DIR"
  2361.         IF disk%=0
  2362.           print_cs("Directory of Drive "+CHR$(65+disk%*2))
  2363.           print_cs(" ")
  2364.           print_cs("VIRUS     12.04.1990  34212")
  2365.           print_cs("DEVIRUS   12.04.1990  12341")
  2366.           print_cs("SEARCH    13.06.1991      0")
  2367.           print_cs("PACMAN    17.08.1991 452332")
  2368.           print_cs("66736 Bytes left.")
  2369.           print_cs(" ")
  2370.         ELSE
  2371.           print_cs("Directory of Drive "+CHR$(65+disk%*2))
  2372.           print_cs(" ")
  2373.           print_cs("HEIZUNG   11.11.1990  265556")
  2374.           print_cs("ABOMBE    01.01.1991    4453")
  2375.           print_cs("MISSCON   13.03.1991 6563454")
  2376.           print_cs("LABCON    17.08.1990  452332")
  2377.           print_cs("52342356 Bytes left.")
  2378.           print_cs(" ")
  2379.         ENDIF
  2380.       ELSE IF com$="EXIT"
  2381.       ELSE
  2382.         print_cs(x$)
  2383.       ENDIF
  2384.     UNTIL com$="EXIT" OR reset!
  2385.     close_top
  2386.   CASE 40
  2387.     lastraum&=41
  2388.     raum&=42
  2389.   CASE 44
  2390.     open_top
  2391.     print_cs("missile control")
  2392.     print_cs(" ")
  2393.     print_cs("Arms : 4x4 APX-54A missiles")
  2394.     REPEAT
  2395.       IF fl!(23)
  2396.         print_cs("Status : unlocked")
  2397.       ELSE
  2398.         print_cs("Status :   locked")
  2399.       ENDIF
  2400.       print_cs(" ")
  2401.       print_cs("=> c]hange status, t]argeting, l]aunch, e]xit")
  2402.       IF fl!(19)
  2403.         print_cs("mc> B532-424 > $E5334 adress : $1BEF3 does not match")
  2404.         print_cs("debug utility still running ....")
  2405.       ELSE
  2406.         input_cs(1,"mc>",a$)
  2407.         '
  2408.         IF a$="l"
  2409.           GOSUB clrscr
  2410.           IF fl!(24) AND fl!(23)
  2411.             print_cs("Countdown : 5")
  2412.             FOR t%=4 DOWNTO 0
  2413.               DELAY 1
  2414.               print_cs("            "+STR$(t%))
  2415.             NEXT t%
  2416.             print_cs("missile launched.")
  2417.             DELAY 4
  2418.             print_cs("missile still flying.")
  2419.             DELAY 4
  2420.             print_cs("missile hits ===>  target destroyed")
  2421.             print_cs(" ")
  2422.             fl!(24)=FALSE
  2423.             fl!(25)=TRUE
  2424.             dos(7,25)
  2425.           ELSE
  2426.             print_cs("Can't launch missile.")
  2427.             print_cs(" ")
  2428.           ENDIF
  2429.         ENDIF
  2430.         '
  2431.         IF a$="t"
  2432.           GOSUB clrscr
  2433.           print_cs("Search target ...")
  2434.           DELAY 5
  2435.           IF fl!(22) AND NOT fl!(25)
  2436.             print_cs("Find target:")
  2437.             print_cs("heli typ WAU UH1-F ser.num 2534-323-232")
  2438.             input_cs(2,"Confirm target?",b$)
  2439.             IF UPPER$(b$)="Y"
  2440.               print_cs("Aim missile on : 2534-323-232")
  2441.               fl!(24)=TRUE
  2442.               dos(8,5)
  2443.             ENDIF
  2444.           ELSE
  2445.             print_cs("No target present.")
  2446.           ENDIF
  2447.         ENDIF
  2448.         '
  2449.         IF a$="c"
  2450.           GOSUB clrscr
  2451.           IF fl!(23)
  2452.             fl!(23)=FALSE
  2453.             print_cs("missiles locked")
  2454.           ELSE
  2455.             input_cs(15,"Enter code for unlocking : ",b$)
  2456.             IF UPPER$(b$)="NOONOOKEE"
  2457.               print_cs("Correct! missiles unlocked")
  2458.               fl!(23)=TRUE
  2459.               dos(9,5)
  2460.             ELSE
  2461.               print_cs("Incorrect! missiles locked")
  2462.             ENDIF
  2463.           ENDIF
  2464.         ENDIF
  2465.       ENDIF
  2466.     UNTIL a$="e" OR fl!(19)
  2467.     close_top
  2468.   CASE 11
  2469.     raum&=2
  2470.   CASE 37
  2471.     IF fl!(14)
  2472.       go!=TRUE
  2473.       lastraum&=34
  2474.       raum&=38
  2475.     ELSE
  2476.       topic("Boing! Der Kandidat hat 100 blaue Flecke.")
  2477.     ENDIF
  2478.   DEFAULT
  2479.     topic("Deine Quadratlatschen befördern dich zwar an viele Orte, aber nicht dahin!")
  2480.   ENDSELECT
  2481. RETURN
  2482. '
  2483. PROCEDURE unter
  2484.   IF nom&=-1
  2485.     topic("Du sprichst so undeutlich!")
  2486.   ELSE
  2487.     IF ob&(nom&)=0 OR (ob&(nom&)<>raum& AND ob&(nom&)<>-1)
  2488.       topic("Dieses Objekt ist nirgends zu sehen!")
  2489.     ELSE
  2490.       a$="Wie du es auch drehst und wendest, nichts besonderes. Tut mir leider leid."
  2491.       SELECT nom&
  2492.       CASE 48
  2493.         topic("Die Disk ist quadratisch, praktisch gut!")
  2494.       CASE 38
  2495.         IF NOT fl!(16)
  2496.           topic("Als du mit deinen Fingern an der Bombe rumgrabbelst, macht es plötzlich Klick in der Bombe ...")
  2497.           topic("DU HAST DIE BOMBE EINGESCHALTET, /DU WAHNSINNIGER !!!")
  2498.           topic("Eine rote Leuchte beginnt zu brennen und eine mechanische Stimme scheppert : 'TSX-1321 Codewort zur Detonation akzeptiert. Countdown auf 5min eingestellt. Fröhliche Weihnachten!'")
  2499.           buum%=33
  2500.           fl!(16)=TRUE
  2501.           dos(10,10)
  2502.           IF fl!(18)
  2503.             IF ob&(48)<>-1
  2504.               topic("Da du deine Disk leider hast liegenlassen, konnte der AUTOR diese benutzen und die Bombe entschärfen. So ein Pech, so kurz davor und dann noch zu scheitern.")
  2505.               GOSUB tod("Deine Vergeßlichkeit war dein Verderben.")
  2506.             ELSE
  2507.               ob&(40)=0
  2508.               v&(41,5)=0
  2509.               fl!(22)=TRUE
  2510.               ob&(32)=0
  2511.             ENDIF
  2512.           ENDIF
  2513.         ELSE
  2514.           topic("Du kannst sie nicht von hier aus entschärfen.")
  2515.         ENDIF
  2516.       CASE 28
  2517.         topic("Das Viech würde ich lieber nicht anfassen.")
  2518.       CASE 34
  2519.         topic("Der Erzähler schnauzt dich kurz an : 'Hau ab!'")
  2520.       CASE 32,27
  2521.         topic("Du hälst dich lieber fern.")
  2522.       CASE 40
  2523.         topic("Bei näherem Betrachten bemerkst du, daß der HubSchrabSchrab in voller Kampfausrüstung darsteht. Maschinengewehr, Luft-Luft-Raketen, Bomben etc.")
  2524.       CASE 41,42,43
  2525.         topic("Bei genauem Hinsehen bemerkst du : ")
  2526.         topic("Die Spannung steigt.")
  2527.         topic("Was bemerkst du?")
  2528.         topic("Sag es ...!")
  2529.         topic("Du bemerkst ... ")
  2530.         topic("STAUB !")
  2531.         topic("bäääh ....!")
  2532.       CASE 4
  2533.         GOSUB betr
  2534.       CASE 37
  2535.         IF fl!(14)
  2536.           topic("Das Gitter ist nicht mehr sicher befestigt.")
  2537.         ELSE
  2538.           topic("Das Gitter ist sicher befestigt.")
  2539.         ENDIF
  2540.       CASE 36
  2541.         SELECT kagg%
  2542.         CASE 0
  2543.           topic("Als du den Kasten berührst, hörst du ein leises eigenartiges Geräusch.")
  2544.           kagg%=1
  2545.         CASE 1
  2546.           topic("Als du den Kasten berührst, schreckst du vor dem lauten Geräusch zurück, welches aus dem Kasten kommt.")
  2547.           kagg%=2
  2548.         CASE 2
  2549.           topic("Als du wieder den Kasten berührst, springt er auf, ein 10000Volt Blitz kommt heraus und trifft : DICH.")
  2550.           GOSUB tod("Sicherungskästen sollte man nicht ärgern.")
  2551.         ENDSELECT
  2552.       CASE 25
  2553.         IF NOT fl!(7)
  2554.           topic("Als du den Pfarrer untersuchst, bemerkst du seinen Heiligenschein.")
  2555.           ob&(26)=16
  2556.           dos(11,5)
  2557.         ELSE
  2558.           topic(a$)
  2559.         ENDIF
  2560.       CASE 18
  2561.         IF fl!(4)
  2562.           topic("Beherrsch' dich bitte. Die armen Leute sind bewußtlos und du willst ...")
  2563.         ELSE
  2564.           topic("Wie kannst du nur! Als du die Weichteile der Darsteller antatschen wolltest, greift der Regisseur ein...")
  2565.           GOSUB tod("Du bist vom Regisseur erschlagen worden.")
  2566.         ENDIF
  2567.       CASE 19
  2568.         IF NOT fl!(6)
  2569.           topic("Während du in dem alten Gerümpel herumstöberst (Staub, Keuch, Staub, Hust), findest du 3 interessante Dinge.")
  2570.           ob&(23)=14
  2571.           ob&(35)=14
  2572.           fl!(6)=TRUE
  2573.           dos(12,5)
  2574.           ob&(20)=14
  2575.         ELSE
  2576.           topic(a$)
  2577.         ENDIF
  2578.       CASE 15
  2579.         IF ob&(14)=0
  2580.           topic("Als du das Klavier näher betrachtest, bemerkst du eine Violine, die neben ihm liegt.")
  2581.           dos(13,3)
  2582.           ob&(14)=10
  2583.         ELSE
  2584.           topic(a$)
  2585.         ENDIF
  2586.       CASE 1
  2587.         IF ob&(2)=0 AND ob&(3)=0
  2588.           topic("Beim Wühlen in der Mülltonne findest du etwas.")
  2589.           ob&(2)=raum&
  2590.           dos(14,3)
  2591.           ob&(3)=raum&
  2592.         ELSE
  2593.           topic(a$)
  2594.         ENDIF
  2595.       CASE 10
  2596.         IF ob&(4)<>0
  2597.           topic(a$)
  2598.         ELSE
  2599.           topic("In der Nische liegt ein Zettel")
  2600.           dos(15,5)
  2601.           ob&(4)=raum&
  2602.         ENDIF
  2603.       CASE 9
  2604.         IF ob&(9)=-1
  2605.           topic("Auf der Unterseite steht: Vorsicht, betäubende Wirkung!/Nur die Echten mit der Chloro-Kirsche.")
  2606.           dos(16,2)
  2607.         ELSE
  2608.           topic(a$)
  2609.         ENDIF
  2610.       CASE 8
  2611.         IF ob&(9)=0
  2612.           topic("Als du dir 'Assistent' genauer ansiehst, bemerkst du hinter ihm eine Schachtel Pralinen.")
  2613.           dos(17,2)
  2614.           ob&(9)=6
  2615.         ELSE
  2616.           topic(a$)
  2617.         ENDIF
  2618.       DEFAULT
  2619.         GOSUB betr
  2620.       ENDSELECT
  2621.     ENDIF
  2622.   ENDIF
  2623. RETURN
  2624. '
  2625. PROCEDURE open_kasten
  2626.   fl!(13)=TRUE
  2627.   ob&(49)=33
  2628.   ob&(50)=33
  2629.   ob&(51)=33
  2630.   ob&(52)=33
  2631.   dos(18,15)
  2632.   e$="BYE"
  2633. RETURN
  2634. '
  2635. PROCEDURE spr
  2636.   IF nom&=-1
  2637.     topic("Bitte !??!?!")
  2638.   ELSE
  2639.     IF ob&(nom&)<>-1 AND ob&(nom&)<>raum&
  2640.       topic("Dies Objekt ist nirgends zu sehen.")
  2641.     ELSE
  2642.       SELECT nom&
  2643.       CASE 38
  2644.         topic("Die Atombombe sagt nichts. Wie sollte sie auch, ohne geeigneten Gesprächspartner.")
  2645.       CASE 36
  2646.         IF fl!(13)=FALSE
  2647.           open_top
  2648.           SELECT kagg%
  2649.           CASE 47,44
  2650.             topic("Sprechende Computer sind immer noch ein Wunschtraum.")
  2651.           CASE 45
  2652.             topic("Floppys können singen, aber nicht sprechen.")
  2653.           CASE 48
  2654.             topic("Das kommt vom vielen Jacken. Die weiße Hacke ist gleich da, ähh, umgekehrt.")
  2655.           CASE 0
  2656.             kagg%=1
  2657.             print_cs("Der Sicherungskasten murmelt und sagt : 'Hallo, Du!'")
  2658.             GOSUB print_cs("'Was willst du?'")
  2659.           CASE 1
  2660.             kagg%=2
  2661.             print_cs("Der Sicherungskasten sagt ärgerlich : ")
  2662.             GOSUB print_cs("'Mußt du mich in meiner Ruhe stören.'")
  2663.             print_cs("'Was willst du?'")
  2664.           CASE 2
  2665.             print_cs("Der Sicherungskasten schreit dich an:")
  2666.             print_cs("'Du Idiot! Du Penner!'")
  2667.             print_cs("'Was fällt dir ein?'")
  2668.             print_cs("'Wer bist du, daß du hier rumlärmen kannst.'")
  2669.             print_cs("'Wenn du nicht gleich verschwunden bist,")
  2670.             print_cs("verwandele ich dich in Asche.'")
  2671.           ENDSELECT
  2672.           stufe%=0
  2673.           REPEAT
  2674.             REPEAT
  2675.               GOSUB input_cs(25,"Deine Antwort : ",e$)
  2676.             UNTIL e$<>""
  2677.             e$=UPPER$(e$)
  2678.             SELECT stufe%
  2679.             CASE 0
  2680.               IF INSTR(e$,"ÖFFNE")<>0
  2681.                 IF kagg%=1
  2682.                   print_cs("Ach das willst du.")
  2683.                 ELSE
  2684.                   print_cs("So, so deshalb also.")
  2685.                 ENDIF
  2686.                 stufe%=1
  2687.               ELSE
  2688.                 IF kagg%=1
  2689.                   print_cs("Da weiß ich leider auch keinen Rat.")
  2690.                 ELSE
  2691.                   print_cs("Um seine Probleme müssen sich der Herr ")
  2692.                   print_cs("schon selber kümmern.")
  2693.                 ENDIF
  2694.               ENDIF
  2695.             CASE 2
  2696.               IF INSTR(e$,"BITTE")<>0
  2697.                 GOSUB print_cs("Na gut, bei dir ist noch nicht")
  2698.                 print_cs("alles verloren.")
  2699.                 GOSUB print_cs("Aber jetzt geh, weg, weg, weg!")
  2700.                 GOSUB open_kasten
  2701.               ELSE
  2702.                 print_cs("Penner, Idiot, mach dich langsam vom Acker!")
  2703.               ENDIF
  2704.             CASE 1
  2705.               IF INSTR(e$,"BITTE")<>0
  2706.                 IF kagg%=1
  2707.                   GOSUB print_cs("Ich will ja mal nicht so sein.")
  2708.                   GOSUB print_cs("Viel Glück.")
  2709.                   GOSUB open_kasten
  2710.                 ELSE
  2711.                   GOSUB print_cs("Du brauchst gar nicht zu schmeicheln.")
  2712.                   stufe%=2
  2713.                 ENDIF
  2714.               ELSE
  2715.                 IF kagg%=1
  2716.                   print_cs("Das muß ich mir erst noch überlegen.")
  2717.                 ELSE
  2718.                   print_cs("Unhöflicher Patron, du!")
  2719.                 ENDIF
  2720.               ENDIF
  2721.             ENDSELECT
  2722.           UNTIL e$="BYE" OR e$="ENDE" OR e$="END" OR e$="EXIT" OR e$="QUIT"
  2723.           close_top
  2724.         ELSE
  2725.           topic("Der Sicherungskasten sieht relativ gereizt aus. Ich würde ihn nicht weiter belästigen. Grummel, Grummel.")
  2726.         ENDIF
  2727.       CASE 49 TO 52
  2728.         topic("Die Schalter sind im Gegensatz zum Sicherungskasten nicht sehr gesprächig.")
  2729.       CASE 34
  2730.         topic("Er sagt: 'Heute fallen mir keine Witze ein.'")
  2731.       CASE 32
  2732.         open_top
  2733.         a$="Als du den AUTOR weckst und er dich sieht, lacht er. Dann sagt er : "
  2734.         a$=a$+"'Da ich heute meinen brutalen Mittwoch habe, gebe ich dir eine Chance. "
  2735.         a$=a$+"Wenn du meine Frage beantwortest, gebe ich dir den Schlüssel zum Käfig, wenn nicht, dann...'"
  2736.         GOSUB printw(0,a$,FALSE)
  2737.         print_xy(0,6,"Hier ist meine Frage:")
  2738.         print_xy(0,8,"Wie heißt der verrückte Doktor")
  2739.         lese_string(0,9,65,"aus Leisure Suit Larry II : ",a$)
  2740.         close_top
  2741.         IF UPPER$(a$)="NOONOOKEE"
  2742.           topic("Der AUTOR sagt : 'Das war zwar die richtige Antwort, aber du glaubst wohl auch, daß die Babys vom Storch kommen.'")
  2743.           dos(19,10)
  2744.           GOSUB tod("Du bist zu leichtgläubig.")
  2745.         ELSE
  2746.           topic("Der Autor sagt : 'Das war leider falsch. So ein Glück, für mich, versteht sich.'")
  2747.           GOSUB tod("Der AUTOR hat dich ex und hopp. Allerdings mehr ex, um genau zu sein.")
  2748.         ENDIF
  2749.       CASE 30
  2750.         topic("Er fleht dich an: 'Befreie mich, bitte, bitte, bitte'. Er verschluckt sich fast. Gurgel!")
  2751.       CASE 24
  2752.         topic("Sie sagt: 'An mir kommt kein Ungläubiger vorbei'. Yeah, ein Fels in der Brandung der Unmoral.")
  2753.       CASE 25
  2754.         IF fl!(5)=0
  2755.           topic("Er sagt: 'Scher dich zum Teufel, falls der dich noch haben will.'")
  2756.         ELSE
  2757.           topic("Da er bewußtlos ist, kann er nicht antworten. Ruhe seine Seele in Frieden.")
  2758.         ENDIF
  2759.       CASE 26
  2760.         topic("Er sagt: 'Geh mit Gott, mein Sohn, aber GEH !'")
  2761.       CASE 27
  2762.         topic("Der Executor antwortet nicht. Komischer Zeitgenosse.")
  2763.       CASE 28
  2764.         topic("Es sagt: 'smufs snir sdert muijk kl'. Ach, immer diese Mutierten mit ihrer undeutlichen Aussprache.")
  2765.       CASE 21
  2766.         IF fl!(2)<>TRUE
  2767.           open_top
  2768.           print_my(1,"Die Schwester spricht:")
  2769.           printw(3,"Wenn du 3 Fragen richtig beanwortest, werde ich dir etwas sehr Wertvolles geben. Bist du bereit?",FALSE)
  2770.           GOSUB wfk
  2771.           t&=0
  2772.           lese_string(0,6,65,"Was bedeutet CO2:",a$)
  2773.           IF UPPER$(a$)="KOHLENDIOXID"
  2774.             INC t&
  2775.           ENDIF
  2776.           lese_string(0,8,65,"Welches Element hat ein Proton : ",a$)
  2777.           IF UPPER$(a$)="WASSERSTOFF"
  2778.             INC t&
  2779.           ENDIF
  2780.           lese_string(0,10,65,"Wer ist Gott:",a$)
  2781.           close_top
  2782.           IF t&=2
  2783.             topic("Du hast alle Fragen richtig beantwortet, nimm mein Geschenk.")
  2784.             fl!(2)=TRUE
  2785.             ob&(22)=-1
  2786.             dos(20,25)
  2787.           ELSE
  2788.             topic("Du hast es leider nicht geschafft. Du hättest die Schule nicht so oft schwänzen sollen.")
  2789.             topic("So ein Pech, sie hat dich durchschaut.")
  2790.           ENDIF
  2791.         ELSE
  2792.           topic("Sie sagt nichts.")
  2793.         ENDIF
  2794.       CASE 0,1,2,3,4,5,9,10,11,14,15,16,19,20,29,31,33,39
  2795.         gigo
  2796.       CASE 40,41,42,43
  2797.         topic("Fühlst du dich noch?")
  2798.         topic("Nein, das freut mich!")
  2799.       CASE 17
  2800.         IF fl!(4)
  2801.           topic("Du hörst von ihm nur ein seliges Schnarchen.")
  2802.         ELSE
  2803.           topic("Er schreit: 'Eih, what are you störing mei Film!'")
  2804.         ENDIF
  2805.       CASE 18
  2806.         IF fl!(4)
  2807.           topic("Das also ist ein K... i... {Censored by moralian guardians}")
  2808.         ELSE
  2809.           topic("Die beiden schreien: 'Raus, du hast nicht bezahlt.'")
  2810.         ENDIF
  2811.       CASE 6
  2812.         topic("Die Kahlköppe reagieren nicht. Was hättest du auch sonst von ihnen erwarten können?")
  2813.       CASE 13
  2814.         topic("Sie sagt: 'Ich bin stolze 1.40m groß.'")
  2815.       CASE 12
  2816.         topic("Der Bibliothekar sagt nichts, er sieht dich nur fragend an.")
  2817.       CASE 7
  2818.         topic("Die Beamten sagen: 'Unser Amtmann ist verschwunden.'")
  2819.       CASE 8
  2820.         IF fl!(0)
  2821.           topic("Er reagiert nicht, sondern schaut nur gespannt dem Geschehen auf seiner Mattscheibe zu.")
  2822.         ELSE
  2823.           topic("'Assistent' sagt: 'Hast du irgend'was Schönes für mich (Er blinzelt lüstern).'")
  2824.         ENDIF
  2825.       DEFAULT
  2826.         topic(" ??? ")
  2827.       ENDSELECT
  2828.     ENDIF
  2829.   ENDIF
  2830. RETURN
  2831. '
  2832. PROCEDURE spc_events
  2833.   LOCAL da!
  2834.   da!=FALSE
  2835.   IF fl!(16) AND (NOT fl!(18)) AND buum%=31
  2836.     topic("Durch dein lautstarkes Atomgewurschtel hast du den AUTOR auf deine Fährte gebracht. Seine Häscher greifen dich ....")
  2837.     GOSUB tod("Ich möchte dir lieber nicht sagen, wie du gestorben bist.")
  2838.   ENDIF
  2839.   '
  2840.   IF fl!(16) AND buum%=-1
  2841.     topic("In diesem Moment spürst du unter deinen Füßen ein Grummeln ...")
  2842.     GOSUB atom
  2843.   ENDIF
  2844.   '
  2845.   IF raum&=44 AND fl!(17) AND md!(0)
  2846.     topic("Da du an der Heizungssteuerung herumgespielt hast, wird es abwechselnd warm und kalt, abwechselnd -123C und +890C.")
  2847.     GOSUB tod("Du bist erfrannt (==> erfroren und verbrannt).")
  2848.     da!=TRUE
  2849.     md!(0)=FALSE
  2850.   ENDIF
  2851.   IF raum&=44 AND fl!(20) AND (NOT reset!) AND md!(1)
  2852.     topic("Da du an der Laborsteuerung herumgespielt hast, wurden sämtliche Käfige fatalerweise geöffnet und die Versuchstiere freigelassen.")
  2853.     topic("Du stehst vor einer roten Killertomate.")
  2854.     GOSUB tod("Die Killertomate war gar nicht genießbar.")
  2855.     md!(1)=FALSE
  2856.     da!=TRUE
  2857.   ENDIF
  2858.   IF raum&=35 AND (NOT reset!) AND md!(2)
  2859.     topic("Als du diesen Raum betrittst, schwant dir schon Schreckliches ...")
  2860.     topic("Richtig geschwant, denn in diesem Raum sind Selbstschußanlagen. Just in dem Moment, in dem du den Raum betreten hast, haben sie sich auf dich eingeschenkt und eine Salve abgegeben.")
  2861.     topic("In den letzten Sekunden deiner irdischen Existenz bemerkst du im Hintergrund des Raumes eine Tür. Dahinter muß etwas sehr Wertvolles sein.")
  2862.     GOSUB tod("Zuviel Blei ist ungesund.")
  2863.     md!(2)=TRUE
  2864.   ENDIF
  2865.   IF raum&=23 AND NOT reset!
  2866.     IF fl!(7)=TRUE
  2867.       IF md!(3)
  2868.         topic("Selbst der Executor hat vor dem Heiligenschein Respekt. Du kannst passieren.")
  2869.         dos(21,15)
  2870.         md!(3)=FALSE
  2871.       ENDIF
  2872.     ELSE
  2873.       topic("Hier lauert der Executor ........:")
  2874.       topic("Er lauert auf ...")
  2875.       topic("DICH !!!")
  2876.       wfk
  2877.       GOSUB tod("Der Executor hat dich exekutiert.")
  2878.     ENDIF
  2879.     da!=TRUE
  2880.   ENDIF
  2881.   IF raum&=26 AND NOT reset!
  2882.     IF fl!(8)=TRUE
  2883.       IF md!(4)
  2884.         md!(4)=FALSE
  2885.         topic("Die Gasmaske bewahrt dich vor den giftigen Gasen dieses Raumes.")
  2886.         dos(22,15)
  2887.       ENDIF
  2888.     ELSE
  2889.       topic("Durch die Ausdünstungen des Stinktieres wirst du bewußtlos.....")
  2890.       wfk
  2891.       GOSUB tod("Das Stinktier war dein Tod. Es war nicht zu erriechen.")
  2892.     ENDIF
  2893.     da!=TRUE
  2894.   ENDIF
  2895.   IF raum&=10 AND NOT reset!
  2896.     IF fl!(1)=FALSE
  2897.       topic("Als du die Tür öffnest, macht dich der Lärm bewußtlos...")
  2898.       wfk
  2899.       GOSUB tod("Der Gesang war zu viel für dich.")
  2900.     ELSE
  2901.       IF md!(5)
  2902.         md!(5)=FALSE
  2903.         dos(23,15)
  2904.         topic("Da du die Ohrenschützer aufgesetzt hast, kann dir der Lärm nichts anhaben.")
  2905.       ENDIF
  2906.     ENDIF
  2907.     da!=TRUE
  2908.   ENDIF
  2909.   IF raum&=15 AND ob&(24)=15 AND (NOT reset!) AND md!(8)
  2910.     topic("Eine Nonne versperrt den Weg nach Westen.")
  2911.     md!(8)=FALSE
  2912.     da!=TRUE
  2913.   ENDIF
  2914.   IF raum&=16 AND NOT reset!
  2915.     IF fl!(5)=0
  2916.       IF md!(6)
  2917.         md!(6)=FALSE
  2918.         topic("Ein Pfarrer versperrt den Weg nach Westen.")
  2919.       ENDIF
  2920.     ELSE
  2921.       IF md!(7)
  2922.         md!(7)=FALSE
  2923.         topic("Ein bewußtloser Pfarrer versperrt nicht den Weg nach Westen.")
  2924.       ENDIF
  2925.     ENDIF
  2926.     da!=TRUE
  2927.   ENDIF
  2928. RETURN
  2929. '
  2930. PROCEDURE gib
  2931.   IF nom&=-1
  2932.     topic("Dat kappeer ik net!")
  2933.   ELSE
  2934.     IF ob&(nom&)<>-1
  2935.       topic("So etwas hast du gar nicht.")
  2936.     ELSE
  2937.       SELECT nom2&
  2938.       CASE 45
  2939.         IF nom&=48
  2940.           topic("Die Disk ist im Laufwerk.")
  2941.           fl!(21)=TRUE
  2942.           ob&(48)=46
  2943.           dos(24,5)
  2944.         ELSE
  2945.           topic("Das paßt da wohl kaum rein. Du verwechseltst die Diskstation wohl doch mit einem Toaster.")
  2946.         ENDIF
  2947.       CASE 13
  2948.         IF nom&=22
  2949.           topic("Die Lehrerin ist hoch entzückt und dir ewig dankbar. Sie ruft ununterbrochen : 'Hurra, hurra, danach habe ich mein ganzes kurzes Leben lang gesucht.'")
  2950.           fl!(3)=TRUE
  2951.           dos(25,15)
  2952.           ob&(22)=0
  2953.         ELSE
  2954.           topic("Danke, nein.")
  2955.         ENDIF
  2956.       CASE 12
  2957.         topic("Der Bibliothekar nimmt nichts, er sieht dich nur fragend an.")
  2958.       CASE 8
  2959.         IF nom&=16
  2960.           topic("Der 'Assistent' ist hoch erfreut und schiebt sich die Cassette in den Recorder. Er hat dich vergessen und ist glücklich.")
  2961.           fl!(0)=TRUE
  2962.           dos(26,15)
  2963.           ob&(16)=0
  2964.         ELSE
  2965.           topic("Er lehnt grunzend ab.")
  2966.         ENDIF
  2967.       CASE 24
  2968.         IF nom&=3
  2969.           topic("Als die Nonne den Playboy sieht, läuft sie schreiend weg. Das war wohl doch etwas zuviel für die Gute. Der Weg ist frei.")
  2970.           v&(15,3)=16
  2971.           dos(27,15)
  2972.           ob&(3)=15
  2973.           ob&(24)=0
  2974.         ELSE
  2975.           topic("Die Nonne sagt : 'Von einem Gottlosen nehme ich nichts. Scher dich zum Teufel.'")
  2976.         ENDIF
  2977.       CASE 25
  2978.         IF nom&=2
  2979.           a$="Der Pfarrer schnappt sich die Banane und ißt sie auf. Da wird er grün im Gesicht und fällt tot um."
  2980.           a$=a$+" Plötzlich ertönt von oben eine Stimme und sagt drohend: 'WIE KANNST DU ES WAGEN?'"
  2981.           GOSUB topic(a$)
  2982.           GOSUB tod("Gottes Blitz hat dich getroffen.")
  2983.         ELSE IF nom&=9 AND fl!(5)=0
  2984.           topic("Der Pfarrer greift gierig nach den Pralinen. Als er eine gegessen hat, wird er bewußtlos. Der Weg ist frei.")
  2985.           dos(28,15)
  2986.           v&(16,3)=19
  2987.           ob&(9)=0
  2988.           fl!(5)=TRUE
  2989.         ELSE
  2990.           topic("Da der Pfarrer darnieder liegt, kann er nichts annehmen.")
  2991.         ENDIF
  2992.       CASE 6
  2993.         topic("Die Skins nehmen nichts an.")
  2994.       CASE 7
  2995.         topic("Die Beamten sind viel zu beschäftigt, um etwas anzunehmen.")
  2996.       CASE 17
  2997.         IF fl!(4)
  2998.           topic("Er ist bewußtlos, da kann er nichts nehmen.")
  2999.         ELSE
  3000.           topic("Der Regisseur nimmt nichts, er schreit nur : 'Rüüs, rüüs, rüüs'")
  3001.         ENDIF
  3002.       CASE 18
  3003.         IF fl!(4)
  3004.           topic("Sie schlafen (im Sinne von 'die Augen zumachen').")
  3005.         ELSE
  3006.           topic("Die Darsteller wollen nichts von dir.")
  3007.         ENDIF
  3008.       CASE 27
  3009.         topic("Als du dem Executor deine Hand hinhälst, packt er blitzschnell zu. ZACK!")
  3010.         GOSUB tod("Deine Vertrauensseligkeit war dein Tod!")
  3011.       CASE 28
  3012.         topic("Das Stinktier will nichts. Was sollte es auch mit deinem Krempel. Es hat einen Vertrag bei Fidal Fassuun : Das Eu de Toilet der Saison.")
  3013.       CASE 32
  3014.         topic("Da er schläft, kann er auch nichts annehmen. Ist doch logisch, oder?")
  3015.       CASE 30,32,34,36
  3016.         topic("Er will nichts.")
  3017.       CASE 21
  3018.         topic("Sie sagt : 'Außer Blausäure und Arsen kann ich nichts gebrauchen.'")
  3019.       DEFAULT
  3020.         topic("Tote Sachen können nichts nehmen, du Hirni!")
  3021.       ENDSELECT
  3022.     ENDIF
  3023.   ENDIF
  3024. RETURN
  3025. '
  3026. PROCEDURE versp
  3027.   IF nom&=-1
  3028.     topic("Dieses Futtermittel kenne ich nicht.")
  3029.   ELSE
  3030.     IF ob&(nom&)<>-1 AND ob&(nom&)<>raum&
  3031.       topic("Was nicht da ist, kann man auch nicht verspeisen.")
  3032.     ELSE
  3033.       SELECT nom&
  3034.       CASE 44,45,46,47
  3035.         topic("Du bist kein Cracker!")
  3036.       CASE 35
  3037.         topic("Du nimmst den Schraubenzieher und schluckst ihn in einem Stück hinunter. Gluck.")
  3038.         topic("Das war ein Fehler!")
  3039.         tod("Du bist an perforiertem Magen gestorben.")
  3040.       CASE 38
  3041.         topic("Du verwechselst Plutonium mit Vita-Burlecitin.")
  3042.       CASE 36,49,50,51,52
  3043.         topic("Als du in die Kabels beißt und den blanken Draht berührst, springt ein Funke über und verwandelt dich in Asche.")
  3044.         GOSUB tod("Deine Asche ist vom Winde verweht.")
  3045.       CASE 30
  3046.         topic("Du greifst den armen Menschen, häutest ihn mit einer Büroklammer und brätst ihn über deinem Feuerzeug. Dann verspeist du ihn genüßlich. Doch dann .....")
  3047.         topic("Bist du wahnsinnig!!!!. Du sollst den Menschen retten, nicht auffuttern.")
  3048.         GOSUB tod("Soviel Schwachsinn gehört bestraft.")
  3049.       CASE 28
  3050.         topic("Du greifst das arme Tier, häutest es mit einer Büroklammer und brätst es über deinem Feuerzeug. Dann verspeist du es genüßlich. Doch dann .....")
  3051.         GOSUB tod("Dein Magen war gar nicht gut auch das Stinktier zu sprechen. Würg!")
  3052.       CASE 27
  3053.         topic("Der Executor ist absolut ungenießbar. Zuviel Knochen, vielzuviel Metall, noch mehr Sehnen, und kaum Fleisch (Das erinnert mich doch dunkel an etwas). Bääääääh!")
  3054.       CASE 26
  3055.         topic("Als du reinbeißt, springt ein Funke über, in deine Zähne und dann in deinen ganzen Körper.")
  3056.         GOSUB tod("100000 Volt halten auch deine Widerstandsbeißer nicht aus.")
  3057.       CASE 22
  3058.         topic("Du bist groß genug (vor allem deine Füße)!")
  3059.       CASE 19,20,23,32,33,37
  3060.         topic("Das gibt Verstopfung. Garantiert!")
  3061.       CASE 18
  3062.         topic("Ihhhh, wie kann man nur rohes Fleisch essen wollen. Iiii pfui.")
  3063.       CASE 16,33,48
  3064.         topic("Ja,ja Eisenoxid ist gut für's Blut.")
  3065.       CASE 14,15
  3066.         topic("Man kann die Musikbegeisterung auch übertreiben.")
  3067.       CASE 10,11,29,31,40,41,42,43
  3068.         GOSUB topic("Das Sanatorium ist schon verständig. Bitte warte ein paar Minuten...")
  3069.       CASE 9
  3070.         IF ob&(9)=-1
  3071.           topic("Nachdem du eine von den Pralinen genascht hast, wird dir ganz schummeeerriiiggg ....")
  3072.           open_top
  3073.           print_my(5,"Schnarch...Schnarch...Schnarch......")
  3074.           close_top
  3075.           topic("Du fühlst dich etwas schlapp")
  3076.         ELSE
  3077.           topic("Du kommst nicht an diese Leckerei ran.")
  3078.         ENDIF
  3079.       CASE 24,25
  3080.         topic("Das ist nicht der Film : Unter Kannibalen geboren Teil VI. So war das mit der Armenspeisung nicht gemeint.")
  3081.       CASE 21
  3082.         topic("Das ist nicht der Film : Unter Kannibalen geboren Teil V. Außerdem schmeckt Leder ohne Salz nicht sonderlich gut, und in diesem Adventure gibt es kein Salz.")
  3083.       CASE 12,13
  3084.         topic("Das ist nicht der Film : Unter Kannibalen geboren Teil IV. Außerdem willst du ja wohl nicht den Wissensstand dieses Hause senken.")
  3085.         topic("Wobei der eh schon niedrig genug ist.")
  3086.       CASE 8,17,34
  3087.         topic("Das ist nicht der Film : Unter Kannibalen geboren Teil I. Außerdem ist Menschenfleisch ungesund, frag da mal die Eingeborenen von 'Monkey Island™'.")
  3088.         topic("'Monkey Island™' ist eingetragenes Warenzeichen von LucasArts, einer Lucasfilm Division.")
  3089.         topic("Anmerkung des Programmierers:/Apropos LucasArts. Daß Ihr Monkey 2 nicht für den ST herausbringt, werde ich Euch nie verzeihen.")
  3090.       CASE 6
  3091.         topic("Das ist nicht der Film : Unter Kannibalen geboren Teil II. Außerdem ist Stroh schwer verdaulich.")
  3092.       CASE 7
  3093.         topic("Das ist nicht der Film : Unter Kannibalen geboren Teil III. Außerdem schmecken eingeschlafene Füße nicht.")
  3094.       CASE 0
  3095.         topic("Als du in den Pfahl beißt, muß ein Zahn dran glauben. Nächste Woche zum Zahnarzt. Hä Hä!")
  3096.       CASE 1
  3097.         topic("Guten Appetit!")
  3098.       CASE 2
  3099.         topic("Du schlingst die Banane hinunter. Auf einmal wird dir schwindellliiiggg ...")
  3100.         GOSUB tod("Die Banane entsprach doch nicht mehr den Gesundheitsvorschriften.")
  3101.       CASE 3
  3102.         topic("Lustmolch!")
  3103.       CASE 4,39
  3104.         topic("Der Zettel schmeckt zwar nicht besonders, aber er macht satt.")
  3105.         ob&(nom&)=0
  3106.       CASE 5,32,40
  3107.         gigo
  3108.       ENDSELECT
  3109.     ENDIF
  3110.   ENDIF
  3111. RETURN
  3112. '
  3113. PROCEDURE spl
  3114.   IF nom&=-1
  3115.     topic("Hääääääääääääääääääh!")
  3116.   ELSE
  3117.     SELECT nom&
  3118.     CASE 15
  3119.       topic("Ein Jerry Lee Lewis wird du nie. Gib's auf!")
  3120.     CASE 0
  3121.       topic("Na ja, dünn und dämlich genug bist du ja.")
  3122.     CASE 6
  3123.       topic("Du bist nur einer.")
  3124.     CASE 1,8,28
  3125.       topic("Jawoll, Glückwunsch. Du hast den Job!")
  3126.     CASE 2,3,18,24,25,27,32,34,48
  3127.       topic("Bist du gar nicht der Typ für. Laß es!")
  3128.     CASE 7,8,30
  3129.       topic("Du bist schon faul genug. Laß es!")
  3130.     CASE 8,12,13,17,21
  3131.       topic("Mit deinen beiden linken Händen? Aussichtslos!")
  3132.     CASE 14
  3133.       topic("Du spielst eine kleine häßliche Melodie.")
  3134.       IF raum&=11 AND fl!(4)=0
  3135.         topic("Die Akteure sind von deinem Werk so entrückt, daß sie bewußtlos zu Boden sinken.")
  3136.         dos(30,15)
  3137.         fl!(4)=TRUE
  3138.       ENDIF
  3139.     DEFAULT
  3140.       topic("So etwas ist nicht spielbar.")
  3141.     ENDSELECT
  3142.   ENDIF
  3143. RETURN
  3144. '
  3145. PROCEDURE schalt
  3146.   SELECT nom&
  3147.   CASE 49 TO 52
  3148.     alt_raum&=-1
  3149.     IF fl!(9+nom&-49)
  3150.       fl!(nom&-40)=FALSE
  3151.       topic("Der Schalter ist aus.")
  3152.     ELSE
  3153.       fl!(nom&-40)=TRUE
  3154.       topic("Der Schalter ist ein.")
  3155.     ENDIF
  3156.     GOSUB force_wred
  3157.   CASE 42
  3158.     IF fl!(15)
  3159.       topic("Tck, tck, tck, tck, tucke, tucker, tucker ....")
  3160.       topic("Die Moteren sind aus.")
  3161.       fl!(15)=FALSE
  3162.     ELSE
  3163.       topic("Tucker, tucker, tucker, tucke, tck, tck, tck, tck ....")
  3164.       topic("Du hast die Moteren gestartet. Das Ding ist flugbereit. Mast- und Schrotbruch!")
  3165.       topic("Nimm's nicht wörtlich!")
  3166.       dos(32,10)
  3167.       fl!(15)=TRUE
  3168.     ENDIF
  3169.   CASE 41
  3170.     IF NOT fl!(15)
  3171.       topic("Um zu fliegen, müssen die Motoren laufen, du Hirni!")
  3172.     ELSE
  3173.       topic("Die Steuerung funktioniert nur, wenn du in der Luft bist. Ist doch kloar ..")
  3174.     ENDIF
  3175.   CASE 43
  3176.     IF NOT fl!(15)
  3177.       topic("Ohne laufende Motoren fliegt der beste Flieger nicht. So ist das leider.")
  3178.     ELSE
  3179.       topic("Du trittst auf die Pedale, der Schrauber hebt ab, aber du hast was vergessen.")
  3180.       topic("Du weißt nicht, was?")
  3181.       topic("Immer noch nicht?")
  3182.       topic("DU KANNST NICHT FLIEGEN !!!")
  3183.       topic("Du verglühst in einer feurig-heurigen Explosion.")
  3184.       GOSUB tod("Hättest du doch in der Theorie besser aufpaßt!")
  3185.     ENDIF
  3186.   CASE 38
  3187.     GOSUB unter
  3188.   CASE 14,15
  3189.     topic("Das Ding funktioniert ganz altmodisch, ohne Synthie. Also laß' das Schalten!")
  3190.   CASE 19,20,23
  3191.     topic("Da gibt's nichts zum Schalten. Beherrsch' dich!")
  3192.   CASE 44 TO 47
  3193.     topic("Du kannst leider am Gerät keinen Schalter entdecken. Das ist eines von den neuen japanischen Wegwerfgeräten. Die Dinger laufen solange, bis sie kaputt sind.")
  3194.   CASE 7,8,12,13,17,18,24,25,30,32,34
  3195.     topic("Du verwechselst da etwas. Menschen haben keinen Hauptschalter. Die laufen von alleine.")
  3196.   DEFAULT
  3197.     topic("DU solltest mal DEINE Schaltungen überprüfen. Du hast doch einen Riß in der Platine.")
  3198.   ENDSELECT
  3199. RETURN
  3200. '
  3201. PROCEDURE set
  3202.   IF ob&(nom&)<>-1
  3203.     topic("Du hast den Gegenstand nicht in deine  Händen, und demzufolge kannst du ihn auch nicht aufsetzen. Ist doch logisch, oder ?")
  3204.   ELSE
  3205.     SELECT nom&
  3206.     CASE 1
  3207.       topic("Da die Mülltonne zu schwer ist, setzt du nicht die Mülltonne auf, sondern setzt dich in die Mülltonne.")
  3208.       topic("Dein Wunsch ist mir Befehl....")
  3209.       topic("Durch dein Müllbad hast du leider einen unverwechselbaren Geruch angenommen und demzufolge ....")
  3210.       tod("Terroristen haben feine Nasen.")
  3211.     CASE 2
  3212.       topic("Die Banane ist viel zu groß für deinen Kopf.")
  3213.     CASE 3,39,4
  3214.       topic("Der taugt doch höchstens als Fliegenpatsche.")
  3215.     CASE 5,36
  3216.       topic("Du kriegst das Ding leider nicht aus der Wand, leider!")
  3217.     CASE 9
  3218.       topic("Du schmierst dir das Zeugs in die Haare. Und jetzt ???")
  3219.     CASE 35
  3220.       topic("Du nimmst den Schraubenzieher und steckst ihn in deinen Kopf. Du freust dich.")
  3221.       topic("Aber nicht lange ...")
  3222.       tod("Menschen mit einem Schraubenzieher im Kopf sind nicht lebensfähig.")
  3223.     CASE 23
  3224.       topic("Die Ohrenschützer sind drauf.")
  3225.       fl!(1)=TRUE
  3226.       dos(33,15)
  3227.       ob&(23)=0
  3228.     CASE 20
  3229.       topic("Die Gasmaske klemmt etwas, aber sie sitzt.")
  3230.       ob&(20)=0
  3231.       dos(34,15)
  3232.       fl!(8)=TRUE
  3233.     CASE 26
  3234.       topic("Als du den Heiligenschein aufsetzt, fühlst du eine gewisse Erleuchtung.")
  3235.       ob&(26)=0
  3236.       dos(35,20)
  3237.       fl!(7)=TRUE
  3238.     DEFAULT
  3239.       topic("Das ist doch hirnrissiger Blödsinn, was du da machen willst.")
  3240.     ENDSELECT
  3241.   ENDIF
  3242. RETURN
  3243. '
  3244. PROCEDURE off
  3245.   IF nom&=-1
  3246.     topic("DAS kriege ICH nicht AUF!")
  3247.   ELSE
  3248.     IF ob&(nom&)<>raum&
  3249.       topic("Hier ist nichts zum Öffnen")
  3250.     ELSE
  3251.       SELECT nom&
  3252.       CASE 1
  3253.         topic("Der Restebehälter ist schon sperrangelweitoffen.")
  3254.       CASE 2
  3255.         topic("Was erwartest du? Marzipan? Nun, es sieht jedenfalls so aus ...")
  3256.       CASE 3
  3257.         topic("Du willst es aber genau wissen, was?")
  3258.       CASE 5
  3259.         topic("So spitz sind dein Fingernägel nicht.")
  3260.       CASE 37
  3261.         IF nom2&<>-1
  3262.           IF nom2&=35 AND ob&(35)=-1
  3263.             topic("Mit flinken Bewegungen löst du die vier Schrauben, welche die Gitterplatte festhalten. Der Weg ist frei.")
  3264.             v&(34,3)=38
  3265.             fl!(14)=TRUE
  3266.             dos(36,12)
  3267.           ELSE
  3268.             topic("Das haut nicht hin!")
  3269.           ENDIF
  3270.         ELSE
  3271.           topic("Als du versuchst, das Gitter mit bloßen Händen zu öffnen, brichst du dir einige Fingernägel ab. Das tut weh!")
  3272.         ENDIF
  3273.       CASE 36,38
  3274.         GOSUB unter
  3275.       CASE 29
  3276.         IF nom2&<>-1
  3277.           IF nom2&=33 AND ob&(33)=TRUE
  3278.             topic("Der Käfig ist offen.")
  3279.             dos(37,20)
  3280.             GOSUB ende
  3281.           ELSE
  3282.             topic("Ohne Schlüssel geht das nicht.")
  3283.           ENDIF
  3284.         ELSE
  3285.           topic("Willst du den Käfig mit deinen Zähnen aufbeißen?")
  3286.         ENDIF
  3287.       CASE 49 TO 52
  3288.         topic("Laß das lieber den Elektriker machen.")
  3289.       CASE 48
  3290.         topic("Das würde ich lieber lassen, die Disk brauchst du eventutell noch.")
  3291.       CASE 31
  3292.         IF v&(27,1)=0
  3293.           open_top
  3294.           print_my(1,"DOOR CONTROLLER NUMMER 453 ")
  3295.           print_my(2,"Version 3.2 Bauserie 22213-A")
  3296.           lese_string(0,4,65,"Bitte Codewort eingeben:",a$)
  3297.           IF UPPER$(a$)="OVERHEAD"
  3298.             print_xy(0,6,"Codewort akzeptiert.")
  3299.             print_xy(0,8,"Türöffnung wird eingeleitet.")
  3300.             v&(27,1)=28
  3301.             dos(38,5)
  3302.           ELSE
  3303.             print_xy(0,6,"Codewort nicht in Ordnung.")
  3304.           ENDIF
  3305.           close_top
  3306.         ELSE
  3307.           topic("Die Tür ist schon offen.")
  3308.         ENDIF
  3309.       DEFAULT
  3310.         gigo
  3311.       ENDSELECT
  3312.     ENDIF
  3313.   ENDIF
  3314. RETURN
  3315. '
  3316. PROCEDURE zf
  3317.   topic("Als du diesen Raum betrittst, gerätst du in den Strudel eines Randomstrahlers. Du wirst ohnmächtig ....")
  3318.   topic("Als du wieder aufwachst, bist du in einem anderen Raum.")
  3319.   raum&=RANDOM(20)+1
  3320.   topic("Ha, so ein Schwachsinn, Randomstrahler! (Anmerkung des Programmierers)")
  3321. RETURN
  3322. '
  3323. PROCEDURE abg
  3324.   topic("Hier ist gar kein Raum, sondern nur ein Abgruuuuuuuuuuuuuuuuuuuund .......")
  3325.   topic("Du bist im freien Fall ...")
  3326.   topic("Aber nicht mehr lange ...")
  3327.   topic("Denn, ")
  3328.   topic("der nächste Boden kommt bestimmt.")
  3329.   GOSUB tod("Du hast dich zu Tode gestürzt.")
  3330. RETURN
  3331. '
  3332. PROCEDURE luft_sturz
  3333.   topic("Als du weitergehen willst, bemerkst du nicht, wie der Boden sich weiter nach unten neigt. Du kannst dich nicht mehr halten.")
  3334.   topic("Du bist im freien Fall in der Hauptröhre und fällst mit wachsender Geschwindigkeit dem Ansauger entgegen.")
  3335.   topic("Smadder ...")
  3336.   GOSUB tod("Das war deine letzte Rutschpartie.")
  3337. RETURN
  3338. '
  3339. ' ****  Grafik-Routinen ****
  3340. ' >>>>  GRS V1.0        <<<<
  3341. '
  3342. PROCEDURE clear_tops
  3343.   LOCAL t%
  3344.   FOR t%=0 TO DIM?(r_top$())-1
  3345.     r_top$(t%)=""
  3346.   NEXT t%
  3347. RETURN
  3348. '
  3349. PROCEDURE build_in(stil%,flag%,x%,y%,a$)
  3350.   IF ontop! AND (NOT w_red!)
  3351.     IF ABS(x%)>0
  3352.       r_top$(ABS(y%))=CHR$(stil%)+CHR$(flag%)+SPACE$(ABS(x%)-1)+a$
  3353.     ELSE
  3354.       r_top$(ABS(y%))=CHR$(stil%)+CHR$(flag%)+a$
  3355.     ENDIF
  3356.   ENDIF
  3357. RETURN
  3358. '
  3359. PROCEDURE wprbox(x%,y%,x2%,y2%)
  3360.   ADD x2%,ofx%
  3361.   ADD y2%,ofy%
  3362.   ADD x%,ofx%
  3363.   ADD y%,ofy%
  3364.   PRBOX x%,y%,x2%,y2%
  3365. RETURN
  3366. '
  3367. PROCEDURE wrbox(x%,y%,x2%,y2%)
  3368.   ADD x2%,ofx%
  3369.   ADD y2%,ofy%
  3370.   ADD x%,ofx%
  3371.   ADD y%,ofy%
  3372.   RBOX x%,y%,x2%,y2%
  3373. RETURN
  3374. '
  3375. PROCEDURE wpbox(x%,y%,x2%,y2%)
  3376.   ADD x2%,ofx%
  3377.   ADD y2%,ofy%
  3378.   ADD x%,ofx%
  3379.   ADD y%,ofy%
  3380.   PBOX x%,y%,x2%,y2%
  3381. RETURN
  3382. '
  3383. PROCEDURE wtext(x%,y%,l%,a$)
  3384.   LOCAL t%
  3385.   ADD x%,ofx%
  3386.   ADD y%,ofy%
  3387.   PTSIN(0)=x%
  3388.   PTSIN(1)=y%
  3389.   PTSIN(2)=l%
  3390.   PTSIN(3)=0
  3391.   INTIN(1)=0
  3392.   IF l%=0
  3393.     INTIN(0)=0
  3394.   ELSE
  3395.     INTIN(0)=1
  3396.   ENDIF
  3397.   '
  3398.   a$=a$+CHR$(0)
  3399.   FOR t%=2 TO 2+LEN(a$)
  3400.     INTIN(t%)=ASC(MID$(a$,t%-1,1))
  3401.   NEXT t%
  3402.   '
  3403.   CONTRL(0)=11
  3404.   CONTRL(1)=2
  3405.   CONTRL(3)=LEN(a$)+1
  3406.   CONTRL(5)=10
  3407.   CONTRL(6)=vdihandle&
  3408.   VDISYS
  3409. RETURN
  3410. '
  3411. PROCEDURE offset(x%,y%)
  3412.   ofx%=x%
  3413.   ofy%=y%
  3414. RETURN
  3415. '
  3416. PROCEDURE sperr
  3417.   ~WIND_UPDATE(1)
  3418.   wup!(wupdex%)=TRUE
  3419.   INC wupdex%
  3420. RETURN
  3421. '
  3422. PROCEDURE frei
  3423.   IF wupdex%>0
  3424.     ~WIND_UPDATE(0)
  3425.     DEC wupdex%
  3426.     wup!(wupdex%)=FALSE
  3427.   ENDIF
  3428. RETURN
  3429. '
  3430. PROCEDURE force_red(x%,y%,w%,h%)
  3431.   ~FORM_DIAL(0,0,0,0,0,x%,y%,w%,h%)
  3432.   ~EVNT_TIMER(500)
  3433.   ~FORM_DIAL(3,0,0,0,0,x%,y%,w%,h%)
  3434. RETURN
  3435. '
  3436. PROCEDURE force_wred
  3437.   LOCAL a%,b%,c%,d%
  3438.   ~WIND_GET(m4&,4,a%,b%,c%,d%)
  3439.   force_red(a%,b%,c%,d%)
  3440.   reset!=FALSE
  3441. RETURN
  3442. '
  3443. PROCEDURE deftxt(a%,b%,c%,d%)
  3444.   DEFTEXT a%,b%,c%,d%
  3445.   stil%=b%
  3446. RETURN
  3447. '
  3448. PROCEDURE wpellipse(x%,y%,r1%,r2%)
  3449.   LOCAL kx#,ky#
  3450.   kx#=640/fw&
  3451.   ky#=400/fh&
  3452.   x%=x%/kx#
  3453.   y%=y%/ky#
  3454.   r1%=r1%/kx#
  3455.   r2%=r2%/ky#
  3456.   ADD x%,ofx%-wx&(m4&)
  3457.   ADD y%,ofy%-wy&(m4&)
  3458.   PELLIPSE x%,y%,r1%,r2%
  3459. RETURN
  3460. '
  3461. PROCEDURE mausklick
  3462.   LOCAL x%,y%,k%
  3463.   notmaus
  3464.   maus(x%,y%,k%)
  3465. RETURN
  3466. '
  3467. PROCEDURE mausklick_w
  3468.   LOCAL x%,y%,k%
  3469.   notmaus_w
  3470.   maus_w(x%,y%,k%)
  3471. RETURN
  3472. '
  3473. PROCEDURE open_top
  3474.   fk#=0.1
  3475.   do_open_top(0.1,0.1)
  3476. RETURN
  3477. '
  3478. PROCEDURE do_open_top(fkx#,fky#)
  3479.   sperr
  3480.   '
  3481.   ~WIND_GET(m4&,4,fx&,fy&,fw&,fh&)
  3482.   '
  3483.   GOSUB set_offset(m4&)
  3484.   '
  3485.   ontop!=TRUE
  3486.   s_ex%=ex%
  3487.   s_ey%=ey%
  3488.   s_bx%=bx%
  3489.   s_by%=by%
  3490.   s_cx%=cx%
  3491.   s_cy%=cy%
  3492.   '
  3493.   cx%=0
  3494.   cy%=0
  3495.   ex%=ex%+fkx#*bx%
  3496.   ey%=ey%+fky#*by%
  3497.   bx%=bx%-2*fkx#*bx%
  3498.   by%=by%-2*fky#*by%
  3499.   '
  3500.   DEFFILL 0,1,0
  3501.   wprbox(ex%-sx%/2,ey%-sy%/2,ex%+bx%-1+sx%/2,ey%+by%-1+sy%/2)
  3502.   DEFLINE 1,3,0,0
  3503.   wrbox(ex%-sx%/2,ey%-sy%/2,ex%+bx%-1+sx%/2,ey%+by%-1+sy%/2)
  3504.   DEFLINE 1,1,0,0
  3505.   COLOR 0
  3506.   wrbox(ex%-sx%/2,ey%-sy%/2,ex%+bx%-1+sx%/2,ey%+by%-1+sy%/2)
  3507.   COLOR 1
  3508.   GOSUB clear_tops
  3509.   '
  3510.   GOSUB io_aus
  3511.   frei
  3512. RETURN
  3513. '
  3514. PROCEDURE close_top
  3515.   deftxt(1,4,0,fntgr%)
  3516.   print_my((by%-sy%/2)/sy%,"Klukken 'se aufde leenke Mausdaste ...")
  3517.   deftxt(1,0,0,fntgr%)
  3518.   GOSUB mausklick_w
  3519.   '
  3520.   ~WIND_GET(m4&,4,fx&,fy&,fw&,fh&)
  3521.   '
  3522.   ADD ex%,fx&
  3523.   SUB ex%,wx&(m4&)
  3524.   ADD ey%,fy&
  3525.   SUB ey%,wy&(m4&)
  3526.   force_red(ex%-sx%,ey%-sy%,bx%+sx%+sx%,by%+sy%+sy%)
  3527.   ontop!=FALSE
  3528.   ex%=s_ex%
  3529.   ey%=s_ey%
  3530.   bx%=s_bx%
  3531.   by%=s_by%
  3532.   cx%=s_cx%
  3533.   cy%=s_cy%
  3534.   '
  3535.   GOSUB io_ein
  3536.   GOSUB redraw
  3537. RETURN
  3538. '
  3539. PROCEDURE clrscr
  3540.   sperr
  3541.   DEFFILL 0,1,0
  3542.   set_offset(m4&)
  3543.   wpbox(ex%,ey%,ex%+bx%-1,ey%+by%-1)
  3544.   GOSUB clear_tops
  3545.   frei
  3546.   cx%=0
  3547.   cy%=0
  3548. RETURN
  3549. '
  3550. PROCEDURE print_xy(x%,y%,a$)
  3551.   sperr
  3552.   GOSUB set_offset(m4&)
  3553.   ky%=5/6*sy%
  3554.   '
  3555.   GOSUB build_in(stil%,0,x%,y%,a$)
  3556.   '
  3557.   IF GDOS? AND prop!
  3558.     IF x%<0
  3559.       x%=ABS(x%*sx%)
  3560.     ELSE
  3561.       x%=0
  3562.     ENDIF
  3563.     IF y%<0
  3564.       y%=ABS(y%)
  3565.       wtext(ex%+x%,y%*sy%+ey%+ky%,MIN(LEN(a$)*8,bx%),a$)
  3566.     ELSE
  3567.       wtext(ex%+x%,y%*sy%+ey%+ky%,0,a$)
  3568.     ENDIF
  3569.   ELSE
  3570.     x%=ABS(x%)
  3571.     y%=ABS(y%)
  3572.     wtext(x%*sx%+ex%,y%*sy%+ey%+ky%,0,a$)
  3573.   ENDIF
  3574.   frei
  3575. RETURN
  3576. '
  3577. PROCEDURE print_redxy(x%,y%,a$)
  3578.   ky%=5/6*sy%
  3579.   '
  3580.   IF GDOS? AND prop!
  3581.     IF x%<0
  3582.       x%=ABS(x%*sx%)
  3583.     ELSE
  3584.       x%=0
  3585.     ENDIF
  3586.     IF y%<0
  3587.       y%=ABS(y%)
  3588.       wtext(ex%+x%,y%*sy%+ey%+ky%,MIN(LEN(a$)*8,bx%),a$)
  3589.     ELSE
  3590.       wtext(ex%+x%,y%*sy%+ey%+ky%,0,a$)
  3591.     ENDIF
  3592.   ELSE
  3593.     x%=ABS(x%)
  3594.     y%=ABS(y%)
  3595.     wtext(x%*sx%+ex%,y%*sy%+ey%+ky%,0,a$)
  3596.   ENDIF
  3597. RETURN
  3598. '
  3599. PROCEDURE print_pxy(x%,y%,a$)
  3600.   sperr
  3601.   GOSUB set_offset(m4&)
  3602.   ky%=5/6*sy%
  3603.   IF GDOS? AND prop!
  3604.     wtext(0,y%+ey%+ky%,0,a$)
  3605.   ELSE
  3606.     wtext(x%+ex%,y%+ey%+ky%,0,a$)
  3607.   ENDIF
  3608.   frei
  3609. RETURN
  3610. '
  3611. PROCEDURE print_my(y%,a$)
  3612.   LOCAL len%,x1%,x2%,x3%,x4%,y1%,y2%,y3%,y4%
  3613.   sperr
  3614.   GOSUB set_offset(m4&)
  3615.   GOSUB build_in(stil%,1,0,y%,a$)
  3616.   ky%=5/6*sy%
  3617.   IF GDOS? AND prop!
  3618.     ~VQT_EXTENT(a$,x1%,y1%,x2%,y2%,x3%,y3%,x4%,y4%)
  3619.     len%=(bx%-(x2%-x1%))/2
  3620.   ELSE
  3621.     len%=(bx%-LEN(a$)*sx%)/2
  3622.   ENDIF
  3623.   wtext(len%+ex%,y%*sy%+ey%+ky%-1,0,a$)
  3624.   frei
  3625. RETURN
  3626. '
  3627. PROCEDURE print_redmy(y%,a$)
  3628.   LOCAL len%,x1%,x2%,x3%,x4%,y1%,y2%,y3%,y4%
  3629.   ky%=5/6*sy%
  3630.   IF GDOS? AND prop!
  3631.     ~VQT_EXTENT(a$,x1%,y1%,x2%,y2%,x3%,y3%,x4%,y4%)
  3632.     len%=(bx%-(x2%-x1%))/2
  3633.   ELSE
  3634.     len%=(bx%-LEN(a$)*sx%)/2
  3635.   ENDIF
  3636.   wtext(len%+ex%,y%*sy%+ey%+ky%-1,0,a$)
  3637. RETURN
  3638. '
  3639. PROCEDURE print_cs(a$)
  3640.   sperr
  3641.   GOSUB set_offset(m4&)
  3642.   GOSUB scroll
  3643.   GOSUB print_xy(cx%,cy%,a$)
  3644.   INC cy%
  3645.   frei
  3646. RETURN
  3647. '
  3648. PROCEDURE notmaus
  3649.   LOCAL status%,x%,y%,k%
  3650.   ~WIND_GET(m4&,4,fx&,fy&,fw&,fh&)
  3651.   ~WIND_UPDATE(3)
  3652.   REPEAT
  3653.     ~EVNT_BUTTON(1,1,0,x%,y%,k%,status%)
  3654.   UNTIL x%>=fx& AND y%>=fy& AND x%<fx&+fw& AND y%<fy&+fh&
  3655.   ~WIND_UPDATE(2)
  3656. RETURN
  3657. '
  3658. PROCEDURE notmaus_w
  3659.   LOCAL status%,x%,y%,k%
  3660.   ~WIND_GET(m4&,4,fx&,fy&,fw&,fh&)
  3661.   status%=FALSE
  3662.   REPEAT
  3663.     ret%=EVNT_MULTI(&X10011,1,1,0,0,0,0,0,0,0,0,0,0,0,V:mm&(0),127,mx%,my%,mk%,i%,key%,t%)
  3664.     '
  3665.     IF (ret% AND &X10000)=&X10000
  3666.       ' Mitteilung
  3667.       GOSUB window_handling
  3668.     ENDIF
  3669.     '
  3670.     IF reset!
  3671.       ret%=0
  3672.       GOSUB force_wred
  3673.     ENDIF
  3674.     '
  3675.     IF (ret% AND &X10)=&X10
  3676.       ' Maus-Ereignis
  3677.       ~WIND_GET(m4&,4,fx&,fy&,fw&,fh&)
  3678.       IF mx%>=fx& AND my%>=fy& AND mx%<fx&+fw& AND my%<fy&+fh&
  3679.         status%=TRUE
  3680.       ENDIF
  3681.     ENDIF
  3682.   UNTIL status%
  3683. RETURN
  3684. '
  3685. PROCEDURE input_cs(len%,tit$,VAR a$)
  3686.   sperr
  3687.   GOSUB set_offset(m4&)
  3688.   GOSUB scroll
  3689.   frei
  3690.   GOSUB lese_string(cx%,cy%,len%,tit$,a$)
  3691.   INC cy%
  3692. RETURN
  3693. '
  3694. PROCEDURE scroll
  3695.   LOCAL a$,maxze%
  3696.   maxze%=by%/sy%
  3697.   IF cy%=maxze%
  3698.     a$=UPPER$(CHR$(EVNT_KEYBD()))
  3699.     GOSUB clrscr
  3700.   ENDIF
  3701. RETURN
  3702. '
  3703. PROCEDURE print_csf(a$)
  3704.   GOSUB set_offset(m4&)
  3705.   GOSUB print_my(cy%,a$)
  3706.   INC cy%
  3707. RETURN
  3708. '
  3709. PROCEDURE topic(a$)
  3710.   LOCAL len%,fk#
  3711.   cp%=bx%-0.2*bx%
  3712.   calcw(a$,cp%,len%)
  3713.   ADD len%,3
  3714.   '
  3715.   fk#=(by%-len%*sy%)/by%/2
  3716.   '
  3717.   GOSUB do_open_top(0.1,fk#)
  3718.   printw(1,a$,TRUE)
  3719.   close_top
  3720. RETURN
  3721. '
  3722. PROCEDURE zapp(a$)
  3723.   LOCAL len%
  3724.   fk#=0.4
  3725.   do_open_top(0.1,0.4)
  3726.   print_my(1,a$)
  3727.   close_top
  3728. RETURN
  3729. '
  3730. PROCEDURE printline(x%,y%,a$,fl!)
  3731.   IF fl!
  3732.     print_my(y%,a$)
  3733.   ELSE
  3734.     print_xy(x%,y%,a$)
  3735.   ENDIF
  3736. RETURN
  3737. '
  3738. PROCEDURE printw(y%,a$,flag!)
  3739.   LOCAL line%,d&,z$,i&,cpl%,t&
  3740.   '
  3741.   cpl%=bx%/sx%
  3742.   IF GDOS? AND prop!
  3743.     cpl%=cpl%*1.67
  3744.   ENDIF
  3745.   line%=y%
  3746.   '
  3747.   d&=1
  3748.   '
  3749.   DO
  3750.     z$=MID$(a$,d&,cpl%)
  3751.     '
  3752.     EXIT IF d&+cpl%>LEN(a$)
  3753.     '
  3754.     i&=INSTR(z$,"/")
  3755.     IF i&<>0
  3756.       printline(0,line%,MID$(z$,1,i&-1),flag!)
  3757.       INC line%
  3758.       ADD d&,i&
  3759.     ELSE
  3760.       FOR t&=LEN(z$) DOWNTO 1
  3761.         EXIT IF MID$(z$,t&,1)=" "
  3762.       NEXT t&
  3763.       '
  3764.       IF t&=0
  3765.         printline(0,line%,z$,flag!)
  3766.         INC line%
  3767.         ADD d&,LEN(z$)
  3768.       ELSE
  3769.         IF t&=cpl%
  3770.           printline(0,line%,MID$(z$,1,t&),flag!)
  3771.         ELSE
  3772.           printline(0,line%,MID$(z$,1,t&),flag!)
  3773.         ENDIF
  3774.         INC line%
  3775.         ADD d&,t&
  3776.       ENDIF
  3777.       '
  3778.     ENDIF
  3779.   LOOP
  3780.   '
  3781.   a$=MID$(a$,d&)
  3782.   i&=INSTR(a$,"/")
  3783.   IF i&<>0
  3784.     printline(0,line%,MID$(a$,1,i&-1),flag!)
  3785.     INC line%
  3786.     printline(0,line%,MID$(a$,i&+1),flag!)
  3787.     INC line%
  3788.   ELSE
  3789.     printline(0,line%,a$,flag!)
  3790.     INC line%
  3791.   ENDIF
  3792. RETURN
  3793. '
  3794. PROCEDURE calcw(a$,cpl%,VAR line%)
  3795.   LOCAL d&,z$,i&,t&
  3796.   '
  3797.   cpl%=cpl%/sx%
  3798.   IF GDOS? AND prop!
  3799.     cpl%=cpl%*1.67
  3800.   ENDIF
  3801.   line%=0
  3802.   '
  3803.   d&=1
  3804.   '
  3805.   DO
  3806.     z$=MID$(a$,d&,cpl%)
  3807.     '
  3808.     EXIT IF d&+cpl%>LEN(a$)
  3809.     '
  3810.     i&=INSTR(z$,"/")
  3811.     IF i&<>0
  3812.       INC line%
  3813.       ADD d&,i&
  3814.     ELSE
  3815.       FOR t&=LEN(z$) DOWNTO 1
  3816.         EXIT IF MID$(z$,t&,1)=" "
  3817.       NEXT t&
  3818.       '
  3819.       IF t&=0
  3820.         INC line%
  3821.         ADD d&,LEN(z$)
  3822.       ELSE
  3823.         INC line%
  3824.         ADD d&,t&
  3825.       ENDIF
  3826.       '
  3827.     ENDIF
  3828.   LOOP
  3829.   '
  3830.   a$=MID$(a$,d&)
  3831.   i&=INSTR(a$,"/")
  3832.   IF i&<>0
  3833.     INC line%
  3834.     INC line%
  3835.   ELSE
  3836.     INC line%
  3837.   ENDIF
  3838. RETURN
  3839. '
  3840. PROCEDURE maus(VAR mx%,my%,k%)
  3841.   LOCAL status%
  3842.   ~WIND_GET(m4&,4,fx&,fy&,fw&,fh&)
  3843.   ~WIND_UPDATE(3)
  3844.   REPEAT
  3845.     ~EVNT_BUTTON(1,1,1,x%,y%,k%,status%)
  3846.   UNTIL x%>=fx& AND y%>=fy& AND x%<fx&+fw& AND y%<fy&+fh&
  3847.   ~WIND_UPDATE(2)
  3848. RETURN
  3849. '
  3850. PROCEDURE maus_w(VAR mx%,my%,k%)
  3851.   LOCAL status%
  3852.   ~WIND_GET(m4&,4,fx&,fy&,fw&,fh&)
  3853.   status%=FALSE
  3854.   REPEAT
  3855.     ret%=EVNT_MULTI(&X10011,1,1,1,0,0,0,0,0,0,0,0,0,0,V:mm&(0),127,mx%,my%,mk%,i%,key%,t%)
  3856.     '
  3857.     IF (ret% AND &X10000)=&X10000
  3858.       ' Mitteilung
  3859.       GOSUB window_handling
  3860.     ENDIF
  3861.     '
  3862.     IF reset!
  3863.       ret%=0
  3864.       GOSUB force_wred
  3865.     ENDIF
  3866.     '
  3867.     IF (ret% AND &X10)=&X10
  3868.       ' Maus-Ereignis
  3869.       ~WIND_GET(m4&,4,fx&,fy&,fw&,fh&)
  3870.       IF mx%>=fx& AND my%>=fy& AND mx%<fx&+fw& AND my%<fy&+fh&
  3871.         status%=TRUE
  3872.       ENDIF
  3873.     ENDIF
  3874.   UNTIL status%
  3875.   mx%=mx%-fx&+wx&(m4&)
  3876.   my%=my%-fy&+wy&(m4&)
  3877. RETURN
  3878. '
  3879. PROCEDURE key_w(VAR k%)
  3880.   LOCAL status%,mx%,my%,mk%,ret%,i%,t%
  3881.   status%=FALSE
  3882.   REPEAT
  3883.     ret%=EVNT_MULTI(&X10011,1,1,1,0,0,0,0,0,0,0,0,0,0,V:mm&(0),127,mx%,my%,mk%,i%,key%,t%)
  3884.     '
  3885.     IF (ret% AND &X10000)=&X10000
  3886.       ' Mitteilung
  3887.       GOSUB window_handling
  3888.     ENDIF
  3889.     '
  3890.     IF reset!
  3891.       ret%=0
  3892.       GOSUB force_wred
  3893.     ENDIF
  3894.     '
  3895.     IF (ret% AND &X1)=&X1
  3896.       ' Tasten-Ereignis
  3897.       k%=key%
  3898.       status%=TRUE
  3899.     ENDIF
  3900.   UNTIL status%
  3901. RETURN
  3902. '
  3903. PROCEDURE lese_string(x%,y%,z%,titel$,VAR s$)
  3904.   LOCAL key%,key$,i%,a_$
  3905.   a_$=""
  3906.   print_xy(x%,y%,titel$+a_$+"_")
  3907.   i%=LEN(a_$)
  3908.   z%=MIN(z%,-LEN(titel$)+bx%/sx%-1)
  3909.   REPEAT
  3910.     key_w(key%)
  3911.     key$=CHR$(key% AND &HFF)
  3912.     IF (key$<>CHR$(13)) AND (key$<>CHR$(8)) AND i%<z% THEN
  3913.       INC i%
  3914.       a_$=a_$+key$
  3915.       print_xy(x%,y%,titel$+a_$+"_")
  3916.     ENDIF
  3917.     IF (key$=CHR$(8)) AND (LEN(a_$)>0) THEN
  3918.       DEC i%
  3919.       a_$=MID$(a_$,1,LEN(a_$)-1)
  3920.       print_xy(x%,y%,titel$+a_$+"_ ")
  3921.     ENDIF
  3922.   UNTIL key$=CHR$(13)
  3923.   print_xy(x%,y%,titel$+a_$+" ")
  3924.   s$=a_$
  3925. RETURN
  3926. '
  3927. PROCEDURE res_init
  3928.   '
  3929.   ontop!=FALSE
  3930.   '
  3931.   ofx%=0
  3932.   ofy%=0
  3933.   '
  3934.   planes#=ROUND(LOG(WORK_OUT(13))/LOG(2))
  3935.   bs%=((SUCC(WORK_OUT(0))*SUCC(WORK_OUT(1))*planes#)/8)*2
  3936.   '
  3937.   scrbuf%=MALLOC(bs%+2048)
  3938.   titel%=scrbuf%+bs%
  3939.   info%=scrbuf%+bs%+1024
  3940.   '
  3941.   IF scrbuf%<=0 THEN
  3942.     inst_err("Nicht genügend Speicher!")
  3943.   ENDIF
  3944.   '
  3945.   mpx%=WORK_OUT(0)+1
  3946.   mpy%=WORK_OUT(1)+1
  3947.   '
  3948.   mx%=0
  3949.   my%=0
  3950.   mk%=0
  3951.   i%=0
  3952.   key%=0
  3953.   t%=0
  3954.   '
  3955.   DIM mm&(32),sm%(5),dm%(5),p%(8)
  3956.   ABSOLUTE m1&,V:mm&(0)
  3957.   ABSOLUTE m2&,V:mm&(1)
  3958.   ABSOLUTE m3&,V:mm&(2)
  3959.   ABSOLUTE m4&,V:mm&(3)
  3960.   ABSOLUTE m5&,V:mm&(4)
  3961.   ABSOLUTE m6&,V:mm&(5)
  3962.   ABSOLUTE m7&,V:mm&(6)
  3963.   ABSOLUTE m8&,V:mm&(7)
  3964.   '
  3965.   cx%=0
  3966.   cy%=0
  3967.   '
  3968.   ex%=0
  3969.   ey%=0
  3970.   s_cx%=0
  3971.   s_cy%=0
  3972.   '
  3973.   s_ex%=0
  3974.   s_ey%=0
  3975.   '
  3976.   sx%=8
  3977.   sy%=16
  3978.   fntgr%=13
  3979.   '
  3980.   IF mpy%<400
  3981.     sy%=8
  3982.     fntgr%=6
  3983.   ENDIF
  3984.   '
  3985.   IF mpx%<640
  3986.     sy%=6
  3987.     sx%=6
  3988.     fntgr%=4
  3989.   ENDIF
  3990.   '
  3991.   bx%=78*sx%
  3992.   by%=22*sy%
  3993.   s_bx%=bx%
  3994.   s_by%=by%
  3995.   '
  3996.   deftxt(1,0,0,fntgr%)
  3997. RETURN
  3998. '
  3999. PROCEDURE printo
  4000.   FOR t%=0 TO maxn&
  4001.     LPRINT t%'nom$(t%)'ob&(t%)
  4002.   NEXT t%
  4003. RETURN
  4004. '
  4005. ' ****  BUUUM-Daten für "House Quest I"   ****
  4006. ' >>>>  HQ1 V2.03                         <<<<
  4007. '
  4008. PROCEDURE vorspann
  4009.   print_cs(" ")
  4010.   print_cs(" ")
  4011.   GOSUB print_csf("MEGAVENTURES präsentiert :")
  4012.   print_cs(" ")
  4013.   GOSUB print_csf("T H E   H O U S E   Q U E S T  I")
  4014.   GOSUB print_csf("The search for the lost amtmann")
  4015.   print_cs(" ")
  4016.   GOSUB print_csf("Version 2.03 vom 10.03.1992")
  4017.   print_cs(" ")
  4018.   print_cs(" ")
  4019.   GOSUB print_csf("Fritten by Christian Becker")
  4020.   print_cs(" ")
  4021.   print_cs(" ")
  4022.   GOSUB print_csf("Erstellt mit GFA Basic V3.0 und BUUUM 1D V1.00")
  4023.   print_cs(" ")
  4024.   print_cs(" ")
  4025.   print_cs(" ")
  4026.   GOSUB print_csf("WareFree (wf) 1989-92 yb MEGAVENTURES")
  4027.   GOSUB mausklick_w
  4028. RETURN
  4029. '
  4030. PROCEDURE ende
  4031.   GOSUB clrscr
  4032.   xx%=(bx%/sx%)/(by%/sy%)
  4033.   y%=0
  4034.   FOR x%=0 TO bx%/sx% STEP xx%
  4035.     print_xy(-x%,y%,"The End")
  4036.     INC y%
  4037.   NEXT x%
  4038.   y%=0
  4039.   FOR x%=bx%/sx%-xx%-5 TO 0 STEP -xx%
  4040.     print_xy(-x%,y%,"The End")
  4041.     INC y%
  4042.   NEXT x%
  4043.   no_redraw!=TRUE
  4044.   topic("Der Amtmann ist frei.")
  4045.   topic("Das ist dein Verdienst.")
  4046.   IF NOT fl!(25)
  4047.     topic("Auch wenn du deinen Auftrag nicht ganz erfüllt hast (Der AUTOR konnte fliehen), ist dennoch der Amtmann in Sicherheit.")
  4048.   ENDIF
  4049.   topic("Zu deinen Ehren wird in dem besagten Gebäude eine Ehrenfeier abgehalten, wobei dir der höchste Orden der UN verliehen wird.")
  4050.   topic("Du feierst glücklich und ausgelassen, bis du spät in der Nacht zu deiner Wohnung kommst.")
  4051.   topic("Dort findest du einen Zettel.")
  4052.   topic("Auf dem Zettel steht:/Hallo, herzlichen Glückwunsch zu deinem Orden. Paß auf, daß du noch lange eine Brust hast, wo du ihn anheften kannst. /Gez.AUTOR")
  4053.   IF fl!(25)
  4054.     topic("Der AUTOR. Du hast ihn doch abgeschossen. Wie ist er.... Oder war er gar nicht ...?")
  4055.   ELSE
  4056.     topic("Er hat dich aufgespürt.")
  4057.   ENDIF
  4058.   topic("In dieser Nacht findest du keinen Schlaf. Du grübelst darüber nach, wie es nun weitergehen soll. Sollst du dich dein ganzes Leben lang vor ihm fürchten?")
  4059.   topic("Die Antwort kann nur HOUSE QUEST II geben ...........")
  4060.   '
  4061.   GOSUB clrscr
  4062.   notmaus
  4063.   y%=(by%/sy%)/2
  4064.   b$="                                                         "
  4065.   z%=2048
  4066.   DO
  4067.     print_my(y%,b$)
  4068.     print_my(y%,"Das war ")
  4069.     ret%=EVNT_MULTI(&X100010,1,1,1,0,0,0,0,0,0,0,0,0,0,V:mm&(0),z%,mx%,my%,mk%,i%,key%,t%)
  4070.     EXIT IF (ret% AND 2)=2
  4071.     '
  4072.     print_my(y%,b$)
  4073.     print_my(y%,"The House Quest I")
  4074.     ret%=EVNT_MULTI(&X100010,1,1,1,0,0,0,0,0,0,0,0,0,0,V:mm&(0),z%,mx%,my%,mk%,i%,key%,t%)
  4075.     EXIT IF (ret% AND 2)=2
  4076.     '
  4077.     print_my(y%,b$)
  4078.     print_my(y%,"- The Search for the lost Amtmann -")
  4079.     ret%=EVNT_MULTI(&X100010,1,1,1,0,0,0,0,0,0,0,0,0,0,V:mm&(0),z%,mx%,my%,mk%,i%,key%,t%)
  4080.     EXIT IF (ret% AND 2)=2
  4081.     '
  4082.     print_my(y%,b$)
  4083.     print_my(y%,"Noch nicht ausschalten,")
  4084.     ret%=EVNT_MULTI(&X100010,1,1,1,0,0,0,0,0,0,0,0,0,0,V:mm&(0),z%,mx%,my%,mk%,i%,key%,t%)
  4085.     EXIT IF (ret% AND 2)=2
  4086.     '
  4087.     print_my(y%,b$)
  4088.     print_my(y%,"es kommt noch was.")
  4089.     ret%=EVNT_MULTI(&X100010,1,1,1,0,0,0,0,0,0,0,0,0,0,V:mm&(0),z%,mx%,my%,mk%,i%,key%,t%)
  4090.     EXIT IF (ret% AND 2)=2
  4091.     '
  4092.     print_my(y%,b$)
  4093.     print_my(y%,"Nämlich meine Adresse für ")
  4094.     ret%=EVNT_MULTI(&X100010,1,1,1,0,0,0,0,0,0,0,0,0,0,V:mm&(0),z%,mx%,my%,mk%,i%,key%,t%)
  4095.     EXIT IF (ret% AND 2)=2
  4096.     '
  4097.     print_my(y%,b$)
  4098.     print_my(y%,"a) Droh- und Schmähbriefe ")
  4099.     ret%=EVNT_MULTI(&X100010,1,1,1,0,0,0,0,0,0,0,0,0,0,V:mm&(0),z%,mx%,my%,mk%,i%,key%,t%)
  4100.     EXIT IF (ret% AND 2)=2
  4101.     '
  4102.     print_my(y%,b$)
  4103.     print_my(y%,"b) faule Eier, Tomaten und dergleichen")
  4104.     ret%=EVNT_MULTI(&X100010,1,1,1,0,0,0,0,0,0,0,0,0,0,V:mm&(0),z%,mx%,my%,mk%,i%,key%,t%)
  4105.     EXIT IF (ret% AND 2)=2
  4106.     '
  4107.     print_my(y%,b$)
  4108.     print_my(y%,"c) An-, Auf- und ebensolche Regungen")
  4109.     ret%=EVNT_MULTI(&X100010,1,1,1,0,0,0,0,0,0,0,0,0,0,V:mm&(0),z%,mx%,my%,mk%,i%,key%,t%)
  4110.     EXIT IF (ret% AND 2)=2
  4111.     '
  4112.     print_my(y%,b$)
  4113.     print_my(y%,"und ... ")
  4114.     ret%=EVNT_MULTI(&X100010,1,1,1,0,0,0,0,0,0,0,0,0,0,V:mm&(0),z%,mx%,my%,mk%,i%,key%,t%)
  4115.     EXIT IF (ret% AND 2)=2
  4116.     '
  4117.     print_my(y%,b$)
  4118.     print_my(y%,"d) Spenden von 1 bis x DM,")
  4119.     ret%=EVNT_MULTI(&X100010,1,1,1,0,0,0,0,0,0,0,0,0,0,V:mm&(0),z%,mx%,my%,mk%,i%,key%,t%)
  4120.     EXIT IF (ret% AND 2)=2
  4121.     '
  4122.     print_my(y%,b$)
  4123.     print_my(y%,"wobei x gegen unendlich strebt.")
  4124.     ret%=EVNT_MULTI(&X100010,1,1,1,0,0,0,0,0,0,0,0,0,0,V:mm&(0),z%,mx%,my%,mk%,i%,key%,t%)
  4125.     EXIT IF (ret% AND 2)=2
  4126.     '
  4127.     print_my(y%,b$)
  4128.     print_my(y%,"Denn auch Schwachsinn Verzapfen ")
  4129.     ret%=EVNT_MULTI(&X100010,1,1,1,0,0,0,0,0,0,0,0,0,0,V:mm&(0),z%,mx%,my%,mk%,i%,key%,t%)
  4130.     EXIT IF (ret% AND 2)=2
  4131.     '
  4132.     print_my(y%,b$)
  4133.     print_my(y%,"kostet Schweiß (weniger) und ")
  4134.     ret%=EVNT_MULTI(&X100010,1,1,1,0,0,0,0,0,0,0,0,0,0,V:mm&(0),z%,mx%,my%,mk%,i%,key%,t%)
  4135.     EXIT IF (ret% AND 2)=2
  4136.     '
  4137.     print_my(y%,b$)
  4138.     print_my(y%,"Mühe (viel mehr).")
  4139.     ret%=EVNT_MULTI(&X100010,1,1,1,0,0,0,0,0,0,0,0,0,0,V:mm&(0),z%,mx%,my%,mk%,i%,key%,t%)
  4140.     EXIT IF (ret% AND 2)=2
  4141.     '
  4142.     print_my(y%,b$)
  4143.     print_my(y%,"Hier nun die versprochene Adresse : ")
  4144.     ret%=EVNT_MULTI(&X100010,1,1,1,0,0,0,0,0,0,0,0,0,0,V:mm&(0),z%,mx%,my%,mk%,i%,key%,t%)
  4145.     EXIT IF (ret% AND 2)=2
  4146.     '
  4147.     MUL z%,2
  4148.     print_my(y%,b$)
  4149.     print_my(y%,"Christian Becker")
  4150.     ret%=EVNT_MULTI(&X100010,1,1,1,0,0,0,0,0,0,0,0,0,0,V:mm&(0),z%,mx%,my%,mk%,i%,key%,t%)
  4151.     EXIT IF (ret% AND 2)=2
  4152.     '
  4153.     print_my(y%,b$)
  4154.     print_my(y%,"Bäckerwiese 1")
  4155.     ret%=EVNT_MULTI(&X100010,1,1,1,0,0,0,0,0,0,0,0,0,0,V:mm&(0),z%,mx%,my%,mk%,i%,key%,t%)
  4156.     EXIT IF (ret% AND 2)=2
  4157.     '
  4158.     print_my(y%,b$)
  4159.     print_my(y%,"W-3408 Duderstadt")
  4160.     ret%=EVNT_MULTI(&X100010,1,1,1,0,0,0,0,0,0,0,0,0,0,V:mm&(0),z%,mx%,my%,mk%,i%,key%,t%)
  4161.     EXIT IF (ret% AND 2)=2
  4162.     DIV z%,2
  4163.     '
  4164.     print_my(y%,b$)
  4165.     print_my(y%,"Das war's jetzt wirklich.")
  4166.     ret%=EVNT_MULTI(&X100010,1,1,1,0,0,0,0,0,0,0,0,0,0,V:mm&(0),z%,mx%,my%,mk%,i%,key%,t%)
  4167.     EXIT IF (ret% AND 2)=2
  4168.     '
  4169.     print_my(y%,b$)
  4170.     ret%=EVNT_MULTI(&X100010,1,1,1,0,0,0,0,0,0,0,0,0,0,V:mm&(0),z%,mx%,my%,mk%,i%,key%,t%)
  4171.     EXIT IF (ret% AND 2)=2
  4172.     '
  4173.     print_my(y%,b$)
  4174.     print_my(y%,"Das ist das Ende.")
  4175.     ret%=EVNT_MULTI(&X100010,1,1,1,0,0,0,0,0,0,0,0,0,0,V:mm&(0),z%,mx%,my%,mk%,i%,key%,t%)
  4176.     EXIT IF (ret% AND 2)=2
  4177.     '
  4178.     print_my(y%,b$)
  4179.     print_my(y%,"AUSSCHALTEN !!!")
  4180.     ret%=EVNT_MULTI(&X100010,1,1,1,0,0,0,0,0,0,0,0,0,0,V:mm&(0),z%,mx%,my%,mk%,i%,key%,t%)
  4181.     EXIT IF (ret% AND 2)=2
  4182.     '
  4183.     print_my(y%,b$)
  4184.     print_my(y%,"Du bist ja immer noch da!")
  4185.     ret%=EVNT_MULTI(&X100010,1,1,1,0,0,0,0,0,0,0,0,0,0,V:mm&(0),z%,mx%,my%,mk%,i%,key%,t%)
  4186.     EXIT IF (ret% AND 2)=2
  4187.     '
  4188.     print_my(y%,b$)
  4189.     ret%=EVNT_MULTI(&X100010,1,1,1,0,0,0,0,0,0,0,0,0,0,V:mm&(0),z%*2,mx%,my%,mk%,i%,key%,t%)
  4190.     EXIT IF (ret% AND 2)=2
  4191.     '
  4192.     print_my(y%,b$)
  4193.     print_my(y%,"Ich warne dich, es fängt wieder an ... ")
  4194.     ret%=EVNT_MULTI(&X100010,1,1,1,0,0,0,0,0,0,0,0,0,0,V:mm&(0),z%*2,mx%,my%,mk%,i%,key%,t%)
  4195.     EXIT IF (ret% AND 2)=2
  4196.     '
  4197.   LOOP
  4198.   '
  4199.   GOSUB beenden
  4200. RETURN
  4201. '
  4202. PROCEDURE atom
  4203.   LOCAL y%,r%,a%
  4204.   GOSUB clrscr
  4205.   ~WIND_GET(m4&,4,fx&,fy&,fw&,fh&)
  4206.   CLIP fx&,fy&,fw&,fh&
  4207.   DEFFILL 1,2,14
  4208.   y%=40
  4209.   r%=200
  4210.   '
  4211.   a%=1
  4212.   BOUNDARY 0
  4213.   FOR y%=400 TO 300 STEP -10
  4214.     DEFFILL 1,2,RANDOM(15)+1
  4215.     wpellipse(320,y%,r%,40)
  4216.     SUB r%,20
  4217.     PAUSE a%
  4218.   NEXT y%
  4219.   FOR y%=300 TO 100 STEP -10
  4220.     DEFFILL 1,2,RANDOM(15)+1
  4221.     wpellipse(320,y%,40,40)
  4222.     PAUSE a%
  4223.   NEXT y%
  4224.   FOR y%=100 TO 50 STEP -5
  4225.     DEFFILL 1,2,RANDOM(15)+1
  4226.     wpellipse(320,y%,r%,40)
  4227.     ADD r%,20
  4228.     PAUSE a%
  4229.   NEXT y%
  4230.   BOUNDARY 1
  4231.   GOSUB wfk
  4232.   GOSUB tod("Im Zentrum eines atomaren Feuerballs zu stehen, ist extrem ungesund.")
  4233. RETURN
  4234. '
  4235. PROCEDURE ges
  4236.   GOSUB clrscr
  4237.   print_cs("HOUSE QUEST I - The search for the lost amtmann   -   Version 2.03")
  4238.   print_cs(" ")
  4239.   print_cs("Nachricht an : Agent 532-X-23B")
  4240.   print_cs("von          : Stabschef der Streitkräfte der Vereinigten Nationen (CSAFUN)")
  4241.   print_cs("Status       : Nur für den Dienstgebrauch (Streng geheim)")
  4242.   print_cs("Datum        : 01.04.1997")
  4243.   a$="Diese Nachricht hat die ganze Welt erschüttert. Ein unbekanntes Wesen namens AUTOR "
  4244.   a$=a$+"hat den Amtmann(= BOSS) des Weltverwaltungsbüros entführt und in seinem eigenen Gebäude eingekerkert. "
  4245.   a$=a$+"Niemand weiß, woher dieses Wesen kommt und was es will. Forderungen hat "
  4246.   a$=a$+"es bis jetzt nicht gestellt. Aber das ganze Verwaltungsbüro ist lahmgelegt. "
  4247.   a$=a$+"Nichts geht mehr, die gesamte Verwaltung ist zusammengebrochen. "
  4248.   a$=a$+"Chaos und Anarchie breiten sich immer mehr aus. Diesem Treiben muß Einhalt "
  4249.   a$=a$+"geboten werden. Eine bewaffnete Einheit zur Befreiung des Amtmanns wurde "
  4250.   a$=a$+"vollständig aufgerieben. So haben wir uns zu einem Kommandounternehmen "
  4251.   a$=a$+" entschlossen. Ein einzelner Mann, unauffällig, gewöhnlich, soll in das "
  4252.   a$=a$+"Gebäude eindringen, den Amtmann befreien, und, wenn nötig, den AUTOR "
  4253.   a$=a$+"eliminieren. Andere Prioritäten gibt es nicht.                 Gez. QQX"
  4254.   GOSUB printw(7,a$,FALSE)
  4255.   ADD cy%,13
  4256.   print_cs("Viel Glück...")
  4257.   GOSUB wfk
  4258.   GOSUB clrscr
  4259.   print_cs("Steuerung:")
  4260.   a$="HQ wird nicht über Worteingabe gesteuert, wie etwa Nimm Geld o.ä., sondern "
  4261.   a$=a$+"die Befehle und Objekte werden einfach mit der Maus angeklickt. Im unteren "
  4262.   a$=a$+"Bereich des Fensters ist ein Feld mit Verben dargestellt, darüber sind "
  4263.   a$=a$+"die sichtbaren Objekte zu sehen. Um nun ein Eingabe zu machen, wird "
  4264.   a$=a$+"zuerst ein Verb angeklickt, dann gegebenenfalls ein Objekt und zum "
  4265.   a$=a$+"Schluß muß noch die Eingabezeile selbst angeklickt werden, um den "
  4266.   a$=a$+"Befehl auszuführen. Die Meldungen des Computers werden in kleinen "
  4267.   a$=a$+"Boxen angezeigt. Während die Box auf dem Bildschirm steht, wartet "
  4268.   a$=a$+"der Rechner auf einen Mausklick. In manchen Spielsituationen erwartet "
  4269.   a$=a$+"der Rechner eine  Tastatureingabe. Beendet wird das Spiel durch "
  4270.   a$=a$+"Anklicken der Fensterschließbox."
  4271.   GOSUB printw(2,a$,FALSE)
  4272.   ADD cy%,5
  4273.   GOSUB wfk
  4274.   GOSUB clrscr
  4275.   print_cs("Befehle : ")
  4276.   print_cs(" ")
  4277.   print_cs("Inhalt            : zeigt die genommenen Gegenstände")
  4278.   print_cs("RAM-Save,RAM-Load : speichert einen Spielstand ins RAM")
  4279.   print_cs("Speichern,Laden   :     ''     ''       ''     auf Disk")
  4280.   print_cs(" ")
  4281.   print_cs("Betrachte         : gibt den äußeren Eindruck wieder")
  4282.   print_cs("                    (nur aus der Ferne, ungefährlich)")
  4283.   print_cs("Untersuche        : betrachtet den Gegenstand näher ")
  4284.   print_cs("                    (Unter Umständen gefährlich)")
  4285.   print_cs("Nord,Süd ...      : Richtungsbefehle")
  4286.   print_cs("Rest              : wie der Name schon sagt.")
  4287.   print_cs(" ")
  4288.   print_cs(" ")
  4289.   print_cs(" ")
  4290.   print_csf("Diese Anleitung kann durch Drücken ")
  4291.   print_csf("einer Umschalttaste bei Programmstart ")
  4292.   print_csf("umgangen werden.")
  4293.   GOSUB wfk
  4294. RETURN
  4295. '
  4296. ' Flagliste
  4297. '  0 - Assistent beschäftigt?
  4298. '  1 - Ohrenschützer auf?
  4299. '  2 - Fragen richtig?
  4300. '  3 - Lehrerin glüecklich
  4301. '  4 - Filmcrew bewußtlos
  4302. '  5 - Pfarrer bewußtlos?
  4303. '  6 - utensilien durchwühlt?
  4304. '  7 - Heiliegnschein auf?
  4305. '  8 - Gasmaske auf
  4306. '  9 - Status Schalter 1
  4307. ' 10 - Status Schalter 2
  4308. ' 11 - Status Schalter 3
  4309. ' 12 - Status Schalter 4
  4310. ' 13 - Kasten offen?
  4311. ' 14 - Gitter offen?
  4312. ' 15 - Motoren an?
  4313. ' 16 - Bombe an?
  4314. ' 17 - heizung verseucht!
  4315. ' 18 - abombe versucht?
  4316. ' 19 - rocket verseucht?
  4317. ' 20 - labor versucht?
  4318. ' 21 - Disk im Laufwerk?
  4319. ' 22 - AUTOR gone?
  4320. ' 23 - Raketen Scharf?
  4321. ' 24 - Ziel erfaßt?
  4322. ' 25 - treffer?
  4323. '
  4324. objtext:
  4325. DATA "Dieser Pfahl ist wohl für eine Fahne gedacht. Er könnte aber "
  4326. DATA "auch den Eingeborenen als Marterpfahl für unfähige Abenteurer "
  4327. DATA "dienen. Das läßt sich nicht so genau eruieren."
  4328. DATA "#R"
  4329. DATA "Dies ist eine handelsübliche 100-Liter Mülltonne. Sie muffelt, "
  4330. DATA "weil sie, wie zu erwarten war, seit Wochen nicht geleert wurde. "
  4331. DATA "So ist nun mal die Bürokratie. Langsam, aber unsicher."
  4332. DATA "#R"
  4333. DATA "Diese Banane ist schon uralt und vergammelt. Nur wenn deine Nase "
  4334. DATA "schon in die Nähe kommt, krümmen sich die Nackenhaare. Absolut "
  4335. DATA "ungenießbar."
  4336. DATA "#R"
  4337. DATA "Der Playboy ist absolut unanständig. Ich möchte dies im "
  4338. DATA "Interesse unser jüngeren Mitspieler nicht weiter ausführen, "
  4339. DATA "jedenfalls steigt dir die Schamesröte beim Lesen (???) ins "
  4340. DATA "Gesicht."
  4341. DATA "#R"
  4342. DATA "Auf diesem Zettel steht nur in großen Buchstaben geschrieben: "
  4343. DATA "NOONOOKEE. Du stellst fest, daß der unbekannte Schreiber dies in "
  4344. DATA "Rot geschrieben hat. Merkwürdig, Beamte nehmen doch sonst immer "
  4345. DATA "nur blaue Kulis. (Es sind Kugelschreiber gemeint, nur um "
  4346. DATA "Mißverständnisse zu vermeiden.)"
  4347. DATA "#R"
  4348. DATA "/*/"
  4349. DATA "#R"
  4350. DATA "Der Haufen Skins steht absolut apathisch in der Mitte des "
  4351. DATA "Raumes. Du kannst aus ihrer Miene nicht schließen, was hinter "
  4352. DATA "der Decke (der Schädeldecke) vorgeht. Alle haben einen "
  4353. DATA "eigenartigen trüben Blick (Ja, ja, den haben sie immer, aber "
  4354. DATA "hier besonders)."
  4355. DATA "#R"
  4356. DATA "Die Beamten suchen verzweifelt in den Trümmern und murmeln dabei "
  4357. DATA "immer nur die folgenden Worte: Wo isser, wo isser. Gemeint ist "
  4358. DATA "wahrscheinlich der eingekerkerte Amtmann. Die Armen scheinen "
  4359. DATA "noch gar nicht begriffen zu haben, daß er eingekerkert wurde. "
  4360. DATA "Ja, ja Beamte und Schnelldenker, zwei Sachen, die sich "
  4361. DATA "ausschließen."
  4362. DATA "#R"
  4363. DATA "Du siehst nichts besonderes."
  4364. DATA "#R"
  4365. DATA "Hier handelt es sich um eine ganz feine Sorte. Diese nämlich "
  4366. DATA "kriegt man normalerweise nicht bei IDLA und auf sonst einem "
  4367. DATA "anderen Grabbeltisch. Dir läuft schon das Wasser im Munde "
  4368. DATA "zusammen."
  4369. DATA "#R"
  4370. DATA "Das ist eine ganz normale Nische. Haben wohl die Handwerker "
  4371. DATA "vergessen, zuzukleistern. Typisch, nur Pfusch am Bau."
  4372. DATA "#R"
  4373. DATA "Bei diesem Gebäude handelt es sich um ein merkwürdiges Haus. Das "
  4374. DATA "Haus ist groß, der Platz davor ist groß, die Fenster sind groß, "
  4375. DATA "nur herrscht hier eine gähnende Schläfrigkeit( Wie man in den "
  4376. DATA "Fenstern sehen kann). Es ist halt ein Verwaltungsgebäude."
  4377. DATA "#R"
  4378. DATA "Er sieht völlig normal aus. Aber was heißt das schon."
  4379. DATA "#R"
  4380. DATA "Du hast niemals zuvor ein solch kleine Frau gesehen. Paß auf, "
  4381. DATA "daß du sie nicht zertrittst. Du hast dir erst heute morgen die "
  4382. DATA "Schuhe geputzt."
  4383. DATA "#R"
  4384. DATA "Die Violine sieht so aus, als wäre sie vom Flohmarkt gekauft. "
  4385. DATA "Die Flöhe springen hoch und weit (oder tief und lang ???)."
  4386. DATA "#R"
  4387. DATA "Das Klavier hat auch schon mal besser ausgesehen. Es sieht etwas "
  4388. DATA "abgegriffen aus. Aber ansonsten noch voll funktionstüchtig. "
  4389. DATA "Ping, Pong!"
  4390. DATA "#R"
  4391. DATA "Auf dem Film steht: Nicht unter 32 freigegeben. Du traust dich "
  4392. DATA "gar nicht, das Cover anzusehen. Absolut obsolet."
  4393. DATA "#R"
  4394. DATA "Das ist der berühmt-berüchtigte Schmalfilmregisseur Karlchen "
  4395. DATA "Krüger. Auf sein Konto gehen so berüchtigte Schocker wie 'Karate "
  4396. DATA "Lion VI - Der Schlickboxer' oder 'Indianer Jonas und der Bämbel "
  4397. DATA "des Todes'."
  4398. DATA "#R"
  4399. DATA "Die Darsteller sind splitterfasernackt und befinden sich in "
  4400. DATA "einer eindeutigen Beziehung zueinander. Im Interesse unserer "
  4401. DATA "jüngeren Mitspieler verzichte ich darauf, diese Beziehung näher "
  4402. DATA "zu charakterisieren."
  4403. DATA "#R"
  4404. DATA "Allerlei kaputtes, altes ZeuX."
  4405. DATA "#R"
  4406. DATA "Die Gasmaske stammt wahrscheinlich aus dem ersten Weltkrieg. "
  4407. DATA "Durch die Gucklöcher kann man jedenfalls nicht mehr gucken. "
  4408. DATA "Hauptsache man kann noch atmen, keuch!"
  4409. DATA "#R"
  4410. DATA "Die Schwester ist schon in etwas älteren mittleren Jahren. "
  4411. DATA "Hoffentlich versteht sie ihr Handwerk. Auf jeden Fall wetzt "
  4412. DATA "sie schon mal ihre Messer. Man kann ja nie wissen, ob noch "
  4413. DATA "jemand notgeschlachtet werden muß."
  4414. DATA "#R"
  4415. DATA "Bei diesen Pillen handelt es sich um Wachstumshormone Marke "
  4416. DATA "Wolkenkratzer. Genau das Richtige für Leute, die hoch hinaus "
  4417. DATA "wollen."
  4418. DATA "#R"
  4419. DATA "Die Ohrenschützer sind zwar etwas angestaubt, erfüllen aber "
  4420. DATA "ihren Zweck. Da kommt kein Dezibelchen durch."
  4421. DATA "#R"
  4422. DATA "Bei dieser Nonne handelt es sich um eine resolute Frau, die "
  4423. DATA "nicht willens ist, dich passieren zu lassen. Auf einen Catch "
  4424. DATA "würde ich also verzichten. Der könnte zu Lasten deiner "
  4425. DATA "angegrauten Gesundheit gehen."
  4426. DATA "#R"
  4427. DATA "Bei diesem Pfarrer verhält es sich ähnlich wie bei der Nonne. "
  4428. DATA "Auch er will dich nicht vorbeilassen. Sie haben sich "
  4429. DATA "verschworen. Gott ist nicht mit dir."
  4430. DATA "#R"
  4431. DATA "Der Heiligenschein leuchtet so hell, daß er dich fast blendet. "
  4432. DATA "Es würde dir auch gut stehen. Vielleicht ist Gott doch mit dir."
  4433. DATA "#R"
  4434. DATA "Der Executor ist unbeschreiblich. Es handelt sich um .... Im "
  4435. DATA "Interesse unserer jüngeren Mitspieler verzichte ich hier auf "
  4436. DATA "eine genaue Beschreibung des Executors. Für Mitspieler, die "
  4437. DATA "doch an einer genaueren Beschreibung interessiert sind, verweise "
  4438. DATA "ich auf den Anblick eines Mittagsmahles einer x-beliebigen "
  4439. DATA "Uni-Mensa. Das trifft es genau."
  4440. DATA "#R"
  4441. DATA "Das Stinktier ist eine genetische Mutation mit einem Stinkgrad "
  4442. DATA "von 1000 Muff. Wobei ein Muff dem Gestank eines faulen Eies "
  4443. DATA "entspricht."
  4444. DATA "#R"
  4445. DATA "Es handelt sich bei diesem Käfig um einen ausbruchssicheren Typ. "
  4446. DATA "Die Stäbe sind dick, eng und absolut nicht verbiegbar. Selbst "
  4447. DATA "mit einem Laser würdest du hier nicht reinkommen. Es bleibt also "
  4448. DATA "nur die Tür."
  4449. DATA "#R"
  4450. DATA "DAS ist der verlorene Amtmann. Eine wahrhaft traurige Gestalt. "
  4451. DATA "Kein Wunder, wenn die Verwaltung nicht richtig verwaltet."
  4452. DATA "Aber das ist nicht dein Problem, du sollst ihn ja nur retten."
  4453. DATA "#R"
  4454. DATA "Die nach Norden führende Tür ist leider gesichert. Neben der "
  4455. DATA "Tür ist ein Türschloß. Wahrscheinlich geht die Tür damit auf."
  4456. DATA "#R"
  4457. DATA "Er sieht ganz normal aus. So wie du und ich, Onkel Herbert, "
  4458. DATA "Tante Margret, Thomas Gott-Schalck, Georg Busch, laber, laber, "
  4459. DATA "laber. Aber in seinem Inneren ......?"
  4460. DATA "#R"
  4461. DATA "Das ist der Schlüssel zum Sieg. Im wahrsten Sinne des Wortes."
  4462. DATA "#R"
  4463. DATA "Der Witzerzähler versteckt sich aus Scham in einer "
  4464. DATA "undurchdringlichen Wolke. Es will dich weder sehen noch hören. "
  4465. DATA "Es scheint so, als wäre er heute gar nicht gut drauf. "
  4466. DATA "Es gibt mehr schlechte als weniger schlechte Witzerzähler."
  4467. DATA "#R"
  4468. DATA "Mit diesem Schraubenzieher läßt sich gut in der Nase bohren. "
  4469. DATA "Aber nur, wenn man Weihnachten nichts mehr vorhat. Warum? Denk "
  4470. DATA "mal nach!"
  4471. DATA "#R"
  4472. DATA "Das ist ein stinknormaler, in weißer DIN-Farbe gestrichener "
  4473. DATA "Hauptsicherungskasten. Total normal."
  4474. DATA "#R"
  4475. DATA "Das ist der Zugang zum Lüftungssystem. Ja, ja nur mit Frischluft "
  4476. DATA "läßt sich gut und schnell arbeiten. Deshalb gibt es eine Lüftung "
  4477. DATA "auch nur im Keller des Gebäudes. "
  4478. DATA "#R"
  4479. DATA "Das ist ein thermonuklearer Sprengsatz moderster Bauart mit "
  4480. DATA "schätzungsweise 150 Kilotonnen. Das ist nicht gut. Da du genau "
  4481. DATA "neben der Höllenmaschine stehst, wird es dir ganz mau in den "
  4482. DATA "Kniekehlen."
  4483. DATA "#R"
  4484. DATA "/*/"
  4485. DATA "#R"
  4486. DATA "Es handelt sich um einen stinknormalen HubSchrauber. Er sieht "
  4487. DATA "startklar aus. Willst du nicht eine Runde fliegen? Nur zur "
  4488. DATA "Entspannung. Ist bestimmt gut für deine Gesundheit. Du hast dir "
  4489. DATA "schon lange keine Erholung gekönnt. Nur zu, auf geht's, LOS!"
  4490. DATA "#R"
  4491. DATA "Der Hebbel ist zum Steuern da. Bewegt man den Stick nach vorne, "
  4492. DATA "geht das Ding nach unten, bewegt man ihn nach hinten, geht der "
  4493. DATA "Schrauber nach unten. Oder war es umgekehrt? Oder links, rechts, "
  4494. DATA "Tscha Tscha Tscha, Eins, Zwei, Drei ...."
  4495. DATA "#R"
  4496. DATA "Der Knopf ist zum Anlassen der Motoren gedacht."
  4497. DATA "#R"
  4498. DATA "Die Pedalen dienen zum Regeln des Auftriebs <=> Auf und Nieder."
  4499. DATA "#R"
  4500. DATA "Hiermit kann die Luftabwehrbatterie auf dem Dach des Gebäudes "
  4501. DATA "bedient werden. Der AUTOR scheint vorzubeugen. Obwohl mit diesen "
  4502. DATA "paar Raketen. Aber der hat bestimmt noch andere Sachen auf Lager."
  4503. DATA "#R"
  4504. DATA "Das ist eine handelsübliche 360MB-Floppy von MBI. Nein, du hast "
  4505. DATA "falsch gedacht, das ist kein Toaster. Du mußt deinen Hunger noch "
  4506. DATA "etwas zähmen. GRRRRR!"
  4507. DATA "#R"
  4508. DATA "Auf dem Monitor steht zu lesen : AfbV - System VII Version 4.21 "
  4509. DATA "XTF11 Release 1.4.1991"
  4510. DATA "#R"
  4511. DATA "Das Terminal lädt praktisch zum Einloggen ein. Hack, hack, "
  4512. DATA "hurra!"
  4513. DATA "#R"
  4514. DATA "Auf der Disk steht : Agentensoftware - Inhalt : VIRUS num, "
  4515. DATA "DEVIRUS num, SEARCH file, PACMAN. Written by N.N. "
  4516. DATA "Copyright (c) 1975 Papa Schlecker"
  4517. DATA "#R"
  4518. DATA "Das ist ein normaler Schalter."
  4519. DATA "#R"
  4520. DATA "Das ist ein normaler Schalter."
  4521. DATA "#R"
  4522. DATA "Das ist ein normaler Schalter."
  4523. DATA "#R"
  4524. DATA "Das ist ein normaler Schalter."
  4525. DATA "#R"
  4526. '
  4527. ps_data:
  4528. DATA 24,52,11
  4529. ps_vk:
  4530. DATA Nord,Süd,West,Ost,Oben,Unten,Neustarten,Inhalt,Laden,Speichern
  4531. DATA RAM-Save,RAM-Load,Betrachte,Untersuche,Gehe,Nimm,Lege,Spreche
  4532. DATA Setze,Gib,Verspeise,Spiele,Öffne,Schalte,Hilfe!
  4533. '
  4534. ps_nom:
  4535. DATA Pfahl,Mülltonne,Banane,Playboy,Zettel,Vertretungskasten,Haufen,Beamte,Assistent,Pralinen,Nische,Gebäude
  4536. DATA Bibliothekar,Lehrerin,Violine,Klavier,Film,Regisseur,Darsteller,Utensilien,Gasmaske,Schwester,Hormone,Schützer
  4537. DATA Nonne,Pfarrer,Heiligenschein,Executor,Stinktier,Käfig,Amtmann,Tür,Autor,Schlüssel,Erzähler
  4538. DATA Schraubenzieher,Kasten,Lüftungsgitter,Atombombe,Schreiben,Schrauber,Hebel,Knopf
  4539. DATA Pedal,Leitstand,Floppy,Monitor,Terminal,AgentDisk,Schalter1,Schalter2
  4540. DATA Schalter3,Schalter4
  4541. ps_pr:
  4542. DATA mit,ab,zu:,der,dem,auf,zur,auf,an
  4543. '
  4544. status:
  4545. DATA 1,1,0,0,0,3,4,5,6,0,2,1
  4546. DATA 7,10,0,10,11,11,11,14,0,13,0,0
  4547. DATA 15,16,0,23,26,27,27,27,43,43,25
  4548. DATA 0,33,34,36,32,41,42,42,42,45,46,46,46,-1
  4549. DATA 0,0,0,0
  4550. '
  4551. adv_dat:
  4552. DATA 375
  4553. DATA 46,30,1,42,52
  4554. short_name:
  4555. DATA VORHOF,VORRAUM,VERBINDUNGSRAUM,ZENTRALRAUM,KANTINE,TECHNIKRAUM
  4556. DATA BIBLIOTHEK,FLUR,VERTEILERRAUM,MUSIKZIMMER,KUNSTZIMMER,VERTEILERRAUM
  4557. DATA ERSTE HILFE RAUM,FUNDUS,RAUM,RAUM,GANG,GANG,GANG,GANG,GANG,GANG
  4558. DATA SCHWARZER RAUM,RAUM,WITZERZÄHLER,LABOR,FOLTERKAMMER,SCHICKSALSRAUM
  4559. DATA GANG,GANG,GANG,BEIM AUTOR,RAUM,GANG,RAUM,RAUM,LÜFTUNG,LÜFTUNG,LÜFTUNG,LÜFTUNG
  4560. DATA DACH,HUBSCHRAUBER,SCHLAFGEMACH,FLUR,FEUERLEITZENTRALE,TERMINALRAUM
  4561. '
  4562. raum:
  4563. DATA "Du stehst auf dem Hof vor dem besagten Haus. Der Platz ist "
  4564. DATA "weitgehend verlassen. Im Norden siehst du das besagte Gebäude. "
  4565. DATA "Es ist groß und hat viele Fenster (Wie sich das anhört). In den "
  4566. DATA "Fenstern kann man so gut wie nichts erkennen. Das 'so gut wie' "
  4567. DATA "bezieht sich auf den Dreck, der an den Fenstern ist./Rechts "
  4568. DATA "neben dir ist ein Pfahl und eine Mülltonne. Sonst ist hier "
  4569. DATA "weiter nichts besonderes."
  4570. DATA "#R"
  4571. DATA "Du stehst im Vorraum des Hauses. Es handelt sich hierbei um so "
  4572. DATA "einen postmodernen Prachtbau mit viel Glas und Marmor. "
  4573. DATA "Normalerweise müßte hier ein reges Treiben stattfinden, aber es "
  4574. DATA "ist nichts los. Vor dir sind zwei Treppen. Eine führt nach oben, "
  4575. DATA "die andere nach unten. In der rechten Wand ist eine Nische."
  4576. DATA "#R"
  4577. DATA "Du stehst in einem Verbindungsraum. Eine Treppe führt nach oben. "
  4578. DATA "Vor dir ist eine Glaswand, hinter der du einige Gestalten "
  4579. DATA "erkennen kannst. Die Wand ist so verdreckt, so daß du nicht "
  4580. DATA "genau erkennen kannst, um wen es sich handelt./An der Wand hängt "
  4581. DATA "der Vertretungskasten, in dem Änderungen in den Sprechzeiten der "
  4582. DATA "Leute vermerkt sind."
  4583. DATA "#R"
  4584. DATA "Du bist im Zentralraum des unheimlichen Gebäudes. Hier ist es "
  4585. DATA "genauso wie auf dem Vorplatz: Nichts los. Man ist ja schon "
  4586. DATA "einiges gewöhnt, aber das? Es führen Verbindungen nach allen "
  4587. DATA "Seiten. In der Mitte des Raumes steht ein Haufen Skins."
  4588. DATA "#R"
  4589. DATA "Du stehst in der Beamtenkantine. Hier hat eine Explosion "
  4590. DATA "kosmischen Ausmaßes stattgefunden. Allerlei Küchengeschirr, "
  4591. DATA "Stühle, Vibratoren und ähnliches sind hier verstreut. In den "
  4592. DATA "Trümmern streunen ein paar Beamte herum."
  4593. DATA "#R"
  4594. DATA "Du bist im Technologiezentrum des Gebäudes. Hier ist sozusagen "
  4595. DATA "des Nervenzentrum des Hauses. Alle Daten-, Strom- und sonstigen "
  4596. DATA "Leitungen laufen hier zusammen. Auch verschiedene Kopier- und "
  4597. DATA "FAX-Arbeiten kann man hier erledigen. Diese Gerätschaften sind "
  4598. DATA "jedoch uninteressant für dich. Der Herr dieser Technik sitzt "
  4599. DATA "hinter seinem Schreibtisch und heißt 'The Assistent', welcher "
  4600. DATA "dich bei deinem Eintreten scharf anblickt."
  4601. DATA "#R"
  4602. DATA "Du befindest dich in der Bibliothek. Dem Niveau dieses Hauses "
  4603. DATA "angemessen, ist sie auch nicht allzu groß. Sogar die "
  4604. DATA "Toilettenanschlüsse sind noch vorhanden. An den Wänden kann man "
  4605. DATA "hinter den paar Büchern sogar noch einige Sprüche erkennen. Aber "
  4606. DATA "das ist nebensächlich. Wie gesagt, der Raum ist nicht sonderlich "
  4607. DATA "gut ausgestattet. Wer hier arbeiten muß, ist echt arm dran. Doch "
  4608. DATA "es gibt einen, der sich dieser Aufgabe angenommen hat : 'the "
  4609. DATA "Bibliothekar'. Bei deinem Eintreten blickt er dich fragend an."
  4610. DATA "#R"
  4611. DATA "Du bist in einem Verbindungsflur. Die Wände sind grau, der Boden "
  4612. DATA "schmutzig, die Ecken voller Spinnweben, mit einem Wort : es ist "
  4613. DATA "dreckig. Hier scheint nichts besonderes zu sein."
  4614. DATA "#R"
  4615. DATA "Du bist in einem Verteilerraum. Dieser unterscheidet sich nicht "
  4616. DATA "sonderlich in Ausstattung und Komfort wie der Flur, der zu ihm "
  4617. DATA "führt. Aber er hat einen Ausgang mehr. Eine Weg führt weiter "
  4618. DATA "nach Westen, eine Treppe nach unten."
  4619. DATA "#R"
  4620. DATA "Du bist in einem Musikzimmer. Was ein Musikzimmer in einem "
  4621. DATA "Verwaltungsgebäude zu suchen hat, weiß ich auch nicht. Aber es "
  4622. DATA "ist nun mal da, damit muß man sich leider abfinden. /Du bist "
  4623. DATA "nicht allein in diesem Raum, du fühlst eine Bedrohung auf dich "
  4624. DATA "zukommen: Jawohl, hier ist eine Musiklehrerin. Fragt mich nicht, "
  4625. DATA "ich weiß es auch nicht. Die MusIkerin bearbeitet das Klavier. Es "
  4626. DATA "ist unerträglich."
  4627. DATA "#R"
  4628. DATA "Du bist in dem Kunstzimmer des Hauses. Fragt mich nicht, was ein "
  4629. DATA "Kunstzimmer in einem .... . Du schaust dich um und siehst, wie "
  4630. DATA "hier gerade ein Kunstwerk entsteht. Es handelt sich um einen "
  4631. DATA "PORNOFILM. Die Hauptdarsteller sind gerade dabei, ..../{Censored "
  4632. DATA "by moralian guardians}..../Die Crew "
  4633. DATA "ist bei der Arbeit, und sie sieht es bestimmt nicht gern, "
  4634. DATA "wenn du sie störst."
  4635. DATA "#R"
  4636. DATA "Du stehst in einem Verteilerraum. Zwei Treppe führt nach oben "
  4637. DATA "und unten, außerdem sind hier verschiedene Türen. Sonst alles "
  4638. DATA "wie gehabt."
  4639. DATA "#R"
  4640. DATA "Du stehst im Erste-Hilfe-Raum des Hauses. Er ist zwar nicht modern "
  4641. DATA "ausgestattet, aber für die dringendsten Notfälle dürfte es "
  4642. DATA "reichen. Du siehst im Medizinschränkchen Opium, E605, Speed u.ä. "
  4643. DATA "Aber das ist nebensächlich. An ihrem Schreibtisch sitzt eine "
  4644. DATA "ältliche Krankenschwester. Sie ist wohl schon von Anfang an "
  4645. DATA "dabei. Das Haus wurde meines Wissens 1905 gebaut."
  4646. DATA "#R"
  4647. DATA "Du bist in der Gerümpelkammer des Hauses. Das ist DER wichtigste "
  4648. DATA "Raum neben der Kantine. Normalerweise ist hier die Hölle los, "
  4649. DATA "aber da im Haus der Betrieb lahmgelegt ist, ist auch hier nichts "
  4650. DATA "los. Du bist allein,bis auf ein paar verrottete Utensilien."
  4651. DATA "#R"
  4652. DATA "Du bist in einem normalen Raum (Aber was ist schon normal in "
  4653. DATA "dieser verrückten Welt (Hach, war das jetzt wieder pilosofisch))."
  4654. DATA "#R"
  4655. DATA "Du bist in einem fensterlosen Verbindungsraum. Gott sei Dank ist "
  4656. DATA "noch Strom da, sonst würdest du ins Schwarze treffen, nämlich "
  4657. DATA "mit deinem Kopf gegen eine schwarze Wand."
  4658. DATA "#R"
  4659. DATA "Du bist in einem endlosen, sich windenden Gang. Es ist kein Ende "
  4660. DATA "und kein Anfang zu sehen. Das Licht strahlt monoton von der "
  4661. DATA "Decke und spiegelt sich im frisch gebonerten PVC-Boden. In dir "
  4662. DATA "kommt ein Gefühl des Verirrtseins auf."
  4663. DATA "#R"
  4664. DATA "Du bist in einem endlosen, sich windenden Gang. Es ist kein Ende "
  4665. DATA "und kein Anfang zu sehen. Das Licht strahlt monoton von der "
  4666. DATA "Decke und spiegelt sich im frisch gebonerten PVC-Boden. In dir "
  4667. DATA "kommt ein Gefühl des Verirrtseins auf."
  4668. DATA "#R"
  4669. DATA "Du bist in einem endlosen, sich windenden Gang. Es ist kein Ende "
  4670. DATA "und kein Anfang zu sehen. Das Licht strahlt monoton von der "
  4671. DATA "Decke und spiegelt sich im frisch gebonerten PVC-Boden. In dir "
  4672. DATA "kommt ein Gefühl des Verirrtseins auf."
  4673. DATA "#R"
  4674. DATA "Du bist in einem endlosen, sich windenden Gang. Es ist kein Ende "
  4675. DATA "und kein Anfang zu sehen. Das Licht strahlt monoton von der "
  4676. DATA "Decke und spiegelt sich im frisch gebonerten PVC-Boden. In dir "
  4677. DATA "kommt ein Gefühl des Verirrtseins auf."
  4678. DATA "#R"
  4679. DATA "Du bist in einem endlosen, sich windenden Gang. Es ist kein Ende "
  4680. DATA "und kein Anfang zu sehen. Das Licht strahlt monoton von der "
  4681. DATA "Decke und spiegelt sich im frisch gebonerten PVC-Boden. In dir "
  4682. DATA "kommt ein Gefühl des Verirrtseins auf."
  4683. DATA "#R"
  4684. DATA "Du bist in einem endlosen, sich windenden Gang. Es ist kein Ende "
  4685. DATA "und kein Anfang zu sehen. Das Licht strahlt monoton von der "
  4686. DATA "Decke und spiegelt sich im frisch gebonerten PVC-Boden. In dir "
  4687. DATA "kommt ein Gefühl des Verirrtseins auf."
  4688. DATA "#R"
  4689. DATA "Du bist in einem schwarzen, fensterlosen Raum. In diesem "
  4690. DATA "Halbdunkel kannst du nicht viel erkennen, aber du spürst, daß du "
  4691. DATA "nicht allein in diesem Raum ist. Aber was auch immer mit dir in "
  4692. DATA "diesem Raum ist, es ist nichts Gutes. Die Nackenhaare sträuben "
  4693. DATA "sich dir : Es ist der EXECUTOR."
  4694. DATA "#R"
  4695. DATA "Du stehst in einem Raum. Hier scheint nichts besonders zu sein. "
  4696. DATA "Sieht jedenfalls so aus, so wie ich das sehe."
  4697. DATA "#R"
  4698. DATA "Du bist im Zimmer des Witzerzählers. Man weiß nicht, wer er ist, "
  4699. DATA "was er ißt, noch woher er kommt. Er war einfach da. Vermutlich "
  4700. DATA "ist er ein Spießgeselle des AUTOR's. Außer dem Witzerzähler ist "
  4701. DATA "niemand und nichts in diesem Raum."
  4702. DATA "#R"
  4703. DATA "Du bist in einem Biologie-Testlabor. Hier stehen allerlei "
  4704. DATA "technische Apperaturen herum. Von diesen Dingen hast du "
  4705. DATA "allerdings keine Ahnung, und so würde ich dir raten, nichts "
  4706. DATA "anzufassen. Sonst sprengst du den ganzen Laden noch in die Luft."
  4707. DATA "#R"
  4708. DATA "Du bist in der Folterkammer. Allerlei Dinge für den Hausgebrauch "
  4709. DATA "wie Peitschen, Nieten etc. (Der Fachmann wird wissen, was man "
  4710. DATA "braucht) hängen an den Wänden. /Für den Normalen alles ziemlich "
  4711. DATA "uninteressant. Das einzig Interessante für dich steht in der "
  4712. DATA "Mitte des Raumes. Es handelt sich um einen Käfig."
  4713. DATA "#R"
  4714. DATA "Du bist im Schicksalsraum angekommen. Was für ein sinnreicher "
  4715. DATA "Name. Außer der Tür, durch die du hereingekommen bist, gibt es "
  4716. DATA "hier noch drei weitere Türen. Frag mich nicht, wo sie hinführen. "
  4717. DATA "Es ist deine Entscheidung. Wähle die Richtige (Du merkst, es "
  4718. DATA "geht auf den dramaturgischen Höhepunkt zu. Deshalb das "
  4719. DATA "Geschwafel.)."
  4720. DATA "#R"
  4721. DATA "Du bist in einem Gang, der weiter nach vorn führt."
  4722. DATA "#R"
  4723. DATA "Du bist in einem Gang, der noch weiter nach vorn führt."
  4724. DATA "#R"
  4725. DATA "Du bist in einem Gang, der immer weiter nach vorn führt."
  4726. DATA "#R"
  4727. DATA "Du bist in den Räumen des bösartigsten, gefährlichsten, "
  4728. DATA "hinterhältigsten Wesens gekommen, das man sich vorstellen kann. "
  4729. DATA "Es ist ein Geschöpf aus deinen schlimmsten Alpträumen. Es ist "
  4730. DATA "schlimmer als 'Tanz der Teufel 1-3' und 'Kettensägenmassaker' "
  4731. DATA "zusammen. Es handelt sich um den AUTOR. Zum Glück für dich sitzt "
  4732. DATA "er gerade nicht an seinem Schreibtisch."
  4733. DATA "#R"
  4734. DATA "Du stehst in einem Raum. Hier ist die unterste Ebene des "
  4735. DATA "Gebäudes mit den Versorgungseinrichtungen. Hier laufen die Fäden "
  4736. DATA "zusammen, hier ist nämlich der Hauptsicherungskasten. Mit ihm "
  4737. DATA "hier kann man dem ganzen Haus den Saft abdrehen."
  4738. DATA "#R"
  4739. DATA "Du stehst in einem endlosen Gang. Du kannst im feuchten "
  4740. DATA "Halbdunkel zwar nicht viel erkennen, aber soviel du erkennen "
  4741. DATA "kannst, ist hier nichts besonders."
  4742. DATA "#R"
  4743. DATA "Hier ist ein Raum. Hier ist nichts weiter Wichtiges, bis auf die "
  4744. DATA "zwei Maschinengewehrläufe und die Videokamera an der "
  4745. DATA "gegenüberliegenden Wand."
  4746. DATA "#R"
  4747. DATA "Hier ist eine B., eine BO., eine BOM., eine BOMBE ! /Deshalb also auch "
  4748. DATA "die Sicherungsmaßnahme im Vorraum. Wenn die jetzt hochgeht, oh "
  4749. DATA "je. Dir bricht der Angstschweiß aus."
  4750. DATA "#R"
  4751. DATA "Du steckst im Lüftungssystem der unteren Ebene. Die Schächte "
  4752. DATA "werden immer kleiner."
  4753. DATA "#R"
  4754. DATA "Du steckst im Lüftungssystem der unteren Ebene. Die Schächte "
  4755. DATA "sind klein, sehr klein."
  4756. DATA "#R"
  4757. DATA "Du steckst im Lüftungssystem der unteren Ebene. Die Schächte "
  4758. DATA "werden immer kleiner und du kriegst immer weniger Luft "
  4759. DATA "(Hechel!). Merkwürdigerweise fehlen hier die Gitter."
  4760. DATA "#R"
  4761. DATA "Du steckst im Lüftungssystem der unteren Ebene. Die Schächte "
  4762. DATA "werden immer noch kleiner, oder bilde ich mir das nur ein. "
  4763. DATA "Merkwürdigerweise fehlen hier wieder die Gitter."
  4764. DATA "#R"
  4765. DATA "Du betrittst durch eine Tür das Dach des Gebäudes. Du nimmst "
  4766. DATA "einen tiefen Zug von der herrlichen versmogten Luft, neue Kräfte "
  4767. DATA "durchströmen deinen arg gebeutelten Agentenkörper. Du mußt mal "
  4768. DATA "wieder Urlaub machen./Neben der guten Luft ist hier noch "
  4769. DATA "ein Hubschrauberlandeplatz."
  4770. DATA "#R"
  4771. DATA "Du bist im Hubschrauber. Vor dir siehst du viel zu viele "
  4772. DATA "Instrumente. Knöpfe, Schalter, Zeiger, rote, grüne, blaue. "
  4773. DATA "Vor deinen Augen verschwimmt alles zu einer undefinierbaren "
  4774. DATA "Farbmasse. Würdest du von deinem Gesichtsfeld eine Hardcopy machen, "
  4775. DATA "käme ein Picasso heraus./"
  4776. DATA "In diesem Moment erinnerst du dich an deine "
  4777. DATA "verpatzte Hubschrauberprüfung. Was hat der Prüfer damals noch "
  4778. DATA "gesagt : 'Eher lernt ein Beamter noch das Arbeiten, als Sie das "
  4779. DATA "Fliegen.'"
  4780. DATA "#R"
  4781. DATA "Du bist im Schlafraum des AUTORS. Es ist spartanisch "
  4782. DATA "eingerichtet. Eine nackte Birne baumelt von der Decke, deren "
  4783. DATA "Schein das Zimmer in ein unwirkliches Licht taucht. Sonst sind "
  4784. DATA "keine Möbelstücke zu sehen. Ja, du hast richtig gesehen, der AUTOR "
  4785. DATA "schläft auf dem Fußboden. Es gruselt dich vor dieser Tristess."
  4786. DATA "#R"
  4787. DATA "Du bist in einem Flur. Hier ist sonst nichts weiter."
  4788. DATA "#R"
  4789. DATA "Du bist in der Feuerleitzentrale. Von dem Leitstand werden wohl "
  4790. DATA "die Raketen auf dem Dach bedient. Du siehst, der AUTOR hat vorgesorgt. "
  4791. DATA "Außer der Konsole sind in diesem Raum keine weiteren Gegenstände. "
  4792. DATA "Es sind auch keine anderen Leute da. Welch ein Glücksfall"
  4793. DATA "#R"
  4794. DATA "Du bist im Terminalraum, dem Herz des Systems. Vor hier aus lenkt "
  4795. DATA "der teuflische AUTOR seine dunklen Machenschaften. Wer weiß, "
  4796. DATA "welche Sicherungen hier versteckt sind. Ich weiß es jedenfalls NICHT."
  4797. DATA "Also sei auf der Hut, bedenke alles zweimal, bevor du etwas machst. "
  4798. DATA "#R"
  4799. '
  4800. link:
  4801. DATA 2,0,0,0,0,0
  4802. DATA 0,1,0,0,15,3
  4803. DATA 4,0,0,0,2,0
  4804. DATA 8,3,5,6,0,0
  4805. DATA 0,0,0,4,0,0
  4806. DATA 0,0,4,0,0,0
  4807. DATA 0,0,8,0,0,0
  4808. DATA 0,4,9,7,0,0
  4809. DATA 0,0,10,8,0,12
  4810. DATA 0,0,0,9,0,0
  4811. DATA 0,12,0,0,0,0
  4812. DATA 11,13,14,0,9,33
  4813. DATA 12,0,0,0,0,0
  4814. DATA 0,0,0,12,0,0
  4815. DATA 0,0,0,0,0,2
  4816. DATA 0,0,0,15,0,0
  4817. DATA 22,21,19,20,0,0
  4818. DATA 23,22,19,18,0,0
  4819. DATA 18,22,20,19,0,0
  4820. DATA 17,19,16,19,0,0
  4821. DATA 19,17,18,20,0,0
  4822. DATA 21,17,21,20,0,0
  4823. DATA 0,0,20,24,0,0
  4824. DATA 25,0,23,26,0,0
  4825. DATA 0,24,0,0,0,0
  4826. DATA 0,0,24,27,0,0
  4827. DATA 0,0,26,0,0,0
  4828. DATA -1,27,29,-2,0,0
  4829. DATA 0,0,30,28,0,0
  4830. DATA 0,0,31,29,0,0
  4831. DATA 0,0,32,30,0,0
  4832. DATA 43,41,44,31,0,0
  4833. '
  4834. DATA 0,34,0,0,12,0
  4835. DATA 33,35,0,0,0,0
  4836. DATA 34,36,0,0,0,0
  4837. DATA 35,0,40,0,0,0
  4838. DATA -3,38,0,0,0,0
  4839. DATA 37,39,0,34,0,0
  4840. DATA 38,40,0,35,0,0
  4841. DATA 39,-3,0,36,0,0
  4842. '
  4843. DATA 32,0,0,0,42,0
  4844. DATA 0,0,0,0,0,41
  4845. DATA 0,32,0,0,0,0
  4846. DATA 45,0,46,32,0,0
  4847. DATA 0,44,0,0,0,0
  4848. DATA 0,0,0,44,0,0
  4849. '
  4850. PROCEDURE text_conv(a$,b$)
  4851.   PRINT "Konvertiere Text ...."
  4852.   OPEN "I",#1,a$
  4853.   OPEN "O",#2,b$
  4854.   DO
  4855.     LINE INPUT #1,a$
  4856.     EXIT IF EOF(#1)=TRUE
  4857.     PRINT #2,"Data ";CHR$(34);a$;CHR$(34)
  4858.   LOOP
  4859.   CLOSE #1
  4860.   CLOSE #2
  4861. RETURN
  4862. '
  4863. ' ************ GDOS-Routinen ****************
  4864. '
  4865. PROCEDURE gdos_init
  4866.   LOCAL t%
  4867.   IF GDOS? AND (NOT acc!)
  4868.     '
  4869.     font_num%=@vst_load_fnt
  4870.     '
  4871.     IF font_num%>0
  4872.       '
  4873.       open_top
  4874.       print_csf("Du hast ja GDOS installiert.")
  4875.       print_csf("Soviel Mut gehört belohnt.")
  4876.       print_csf("Du darfst einen anderen Zeichensatz auswählen.")
  4877.       print_cs(" ")
  4878.       print_csf("Jawoll, ist das nicht toll ! (Huch, ein Reim)")
  4879.       print_cs(" ")
  4880.       print_csf("Es wurden "+STR$(font_num%)+" Zeichensätze geladen.")
  4881.       print_cs(" ")
  4882.       FOR t%=1 TO font_num%+1
  4883.         font%=VQT_NAME(t%,a$)
  4884.         print_cs("               -"+STR$(t%)+"- "+a$)
  4885.       NEXT t%
  4886.       '
  4887.       print_cs(" ")
  4888.       REPEAT
  4889.         input_cs(2,"      Deine Wahl (Nein, nicht ankreuzen) : ",a$)
  4890.         t%=VAL(a$)
  4891.       UNTIL t%>=1 AND t%<=font_num%+1
  4892.       '
  4893.       font%=VQT_NAME(t%,a$)
  4894.       print_cs(" ")
  4895.       print_csf("Ist "+a$+" ein Proportionalfont(J/N)?")
  4896.       a$=UPPER$(CHR$(EVNT_KEYBD() AND &HFF))
  4897.       IF a$="J"
  4898.         prop!=TRUE
  4899.       ELSE
  4900.         prop!=FALSE
  4901.       ENDIF
  4902.       '
  4903.       IF fntgr%=13 AND t%>1
  4904.         fntgr%=12
  4905.       ENDIF
  4906.       '
  4907.       set_face(font%)
  4908.       set_th(fntgr%)
  4909.       close_top
  4910.     ENDIF
  4911.   ENDIF
  4912. RETURN
  4913. '
  4914. PROCEDURE gdos_exit
  4915.   IF GDOS? AND (NOT acc!)
  4916.     feh%=@vst_unload_fnt
  4917.   ENDIF
  4918.   ~WIND_CLOSE(handle&)
  4919.   ~WIND_DELETE(handle&)
  4920. RETURN
  4921. '
  4922. FUNCTION open_vworkstation(handle&)
  4923.   LOCAL t%
  4924.   FOR t%=0 TO 9
  4925.     INTIN(t%)=1
  4926.   NEXT t%
  4927.   INTIN(10)=2
  4928.   CONTRL(0)=100
  4929.   CONTRL(1)=0
  4930.   CONTRL(3)=11
  4931.   CONTRL(6)=handle&
  4932.   VDISYS
  4933.   RETURN CONTRL(6)
  4934. ENDFUNC
  4935. '
  4936. PROCEDURE close_vworkstation(handle&)
  4937.   CONTRL(0)=101
  4938.   CONTRL(1)=0
  4939.   CONTRL(3)=0
  4940.   CONTRL(6)=handle&
  4941.   VDISYS
  4942. RETURN
  4943. '
  4944. FUNCTION vst_load_fnt
  4945.   INTIN(0)=0
  4946.   CONTRL(0)=119
  4947.   CONTRL(1)=0
  4948.   CONTRL(3)=1
  4949.   CONTRL(6)=vdihandle&
  4950.   VDISYS
  4951.   RETURN INTOUT(0)
  4952. ENDFUNC
  4953. '
  4954. FUNCTION vst_unload_fnt
  4955.   INTIN(0)=0
  4956.   CONTRL(0)=120
  4957.   CONTRL(1)=0
  4958.   CONTRL(3)=1
  4959.   CONTRL(6)=vdihandle&
  4960.   VDISYS
  4961.   RETURN INTOUT(0)
  4962. ENDFUNC
  4963. '
  4964. PROCEDURE set_th(t%)
  4965.   INTIN(0)=t%
  4966.   CONTRL(0)=107
  4967.   CONTRL(1)=0
  4968.   CONTRL(3)=1
  4969.   CONTRL(6)=vdihandle&
  4970.   VDISYS
  4971.   IF prop!
  4972.     sx%=PTSOUT(2)*4/5
  4973.     sy%=PTSOUT(3)
  4974.   ENDIF
  4975.   '
  4976. RETURN
  4977. '
  4978. PROCEDURE set_face(t%)
  4979.   INTIN(0)=t%
  4980.   CONTRL(0)=21
  4981.   CONTRL(1)=0
  4982.   CONTRL(3)=1
  4983.   CONTRL(6)=vdihandle&
  4984.   VDISYS
  4985. RETURN
  4986. '
  4987. PROCEDURE clear_events
  4988.   LOCAL x%,y%,k%,i%,key%,ret%,t%
  4989.   REPEAT
  4990.     ret%=EVNT_MULTI(&X110011,2,1,1,0,0,0,0,0,0,0,0,0,0,0,256,x%,y%,k%,i%,key%,t%)
  4991.   UNTIL (ret% AND &X100000)=&X100000
  4992.   mm&(3)=handle&
  4993.   m4&=handle&
  4994. RETURN
  4995. '
  4996. PROCEDURE ops
  4997.   CHDRIVE "g:"
  4998.   SAVE "g:\ops"
  4999. RETURN
  5000. '                CfR  -->  Codefreier Raum
  5001. ' Das ist Zeile 5000           >>>>>>>>>>>> End Of The Line
  5002.